Tämä ohje ei pyri olemaan kattava, vaan paremminkin tajunnanvirtaa kehitysosastolta ;)
ViHassa käytettyjä termejä:
Termi | Merkitys |
---|---|
Alue | Maantieteellinen alue, johon voi kuulua esimerkiksi operaatioita, kalustoa jne. |
Henkilö | Luonnollinen henkilö, joka ottaa osaa toimintaan. Henkilö voi kuulua korkeintaan yhteen ryhmään. |
Hälytysryhmä | Yhteen järjestöön kuuluvista henkilöistä koostuva ryhmä, joka ottaa osaa operaatioon. |
Järjestö | Jokainen henkilö kuuluu yhteen järjestöön. Järjestöt saapuvat operaatioihin yksitellen. |
Operaatio | Etsintä, ensiapupäivystys tai vastaava tapahtuma. Operaatiossa voi olla mukana useita ryhmiä ja henkilöitä. |
Sijainti | Ryhmä on aina jossakin paikassa, jota kuvataan termillä sijainti. |
Ryhmä | Operaatiossa toimiva yksikkö, toimintaryhmä. Ryhmä kuuluu yhteen operaatioon. |
Tila | Ryhmä ja henkilö ovat aina jossakin tilassa, joka kuvaa kulloinkin tapahtuvaa toimintaa. Ks. Tilat |
Kalusto | Viestivälineet ja tavarat (muu kalusto). Keskenään samanlaiset on eriteltävä tunnisteella (juokseva numero tms). |
Viestivälineet | Radiolaitteet ja muu sellainen kalusto, joka toimii pääasiallisesti yhdessä tietyssä viestiverkossa (esim. antennit) |
Tavarat | Kalusto, joka ei ole viestivälineitä. |
Tuotantoympäristössä ViHaa käytetään normaalisti SSL-suojatulla yhteydellä. Testiympäristössä ja tilanteen niin vaatiessa voidaan käyttää salaamatontakin yhteyttä.
Käyttäjätunnuksia ei välttämättä tarvita kuin yksi, mutta jäljitettävyyden takia olisi suotavaa että ne olisivat henkilö- tai roolikohtaisia. Sama käyttäjä voi ongelmitta käyttää järjestelmää monesta eri paikasta.
Ohjelmistoa on kehittänyt vuodesta 2003 saakka Riku Kalinen, OH2RK. Arvokasta palautetta on tullut kaikilta käyttäjiltä.
Ohjelmisto on palvelin-asiakaspohjainen. Asiakasohjelmistona voi toimia lähes mikä hyvänsä WWW-selain millä hyvänsä alustalla.
Käytettävän selaimen on tuettava evästeitä (cookies) ja taulukoita. Taulukoiden suhteen riittää, jos niiden sisältö pystytään näyttämään. Lähes kaikki markkinoilla olevat selaimet täyttävät nämä ehdot.
Palvelimessa käytetään Open Source - ratkaisuja (OpenBSD, Linux, MySQL, Apache, PHP).
CVS-jakelussa tagilla rel-* varustetut versiot ovat tuotantokelpoisia.
Tietokannan ja ohjelmaversion yhteensopivuus varmistetaan ja mikäli versiot eivät ole keskenään yhteensopivia, tulee tästä joko selkeä tai kryptinen virheilmoitus.
Jakelupaketissa tulevaa alusta - skriptiä käytetään kannan alustamiseen. Se osaa alustaa sekä tuotanto- että harjoitusympäristöt perusasetuksiin tai mallitiedoilla.
alusta - ottaa mysql - pääkäyttäjän ja kantojen salasanat /etc/viha - hakemistoon talletetuista tiedostoista. Oletussalasanat onkin syytä muuttaa (jos kannan salasana vaihdetaan, pitää perustaa myös config.php ja tallettaa po salasana sinne).
Järjestelmää ei ole rakennettu vihamielistä ympäristöä silmällä pitäen, eli kaikkien käyttäjien tulee olla luotettavia.
Erityisesti operaatiokohtaisia lisämateriaaleja ei ole pakotettu vain tietyn operaation käyttöön.
Järjestelmä pystyy huolehtimaan omin päin käyttäjätunnusten hallinnasta. On huomioitava että käyttäjänhallintakoodi on ajettava joka PHP-tiedoston alussa, esimerkiksi common.php:sta. Ainoa poikkeus tästä on logoff.php.
Salasanat talletetaan kantaan crypt()attuina. Salasana eikä salasanatiiviste ei voi olla tyhjä.
Konfigurointitiedosto on nimeltään config.php. Normaali asennus ei koskaan ylikirjoita tätä. Pohja on tiedostossa config-sample.php. Tiedosto on php-koodia, ja siellä voi asettaa seuraavat muuttujat:
Muuttuja | Oletusarvo | Vaikutus |
---|---|---|
config_mysql_server | 127.0.0.1:3306 | tietokantapalvelimen nimi tai IP-numero ja portti |
config_mysql_user | viha | käyttäjätunnus tietokantapalvelimeen, tarpeellinen jos samassa palvelimessa useita erillisiä ViHa-instansseja |
config_mysql_pass | salasana tietokantapalvelimeen | |
config_db | tilanne3 | käytettävä tietokanta, tarpeellinen jos samassa palvelimessa useita erillisiä ViHa-instansseja |
config_realm | ViHa | mitä näytetään kirjautumisikkunassa |
config_main_title | Pääsivu | pääsivun otsikko |
config_main_h1 | Viestin hallintajärjestelmä ViHa | pääsivun ensimmäinen otsikko |
config_main_motd | näytetään tekstikappaleena pääsivulla ensimmäisen otsikon jälkeen | |
config_debug | 0 | talletetaanko ylimääräistä informaatiota vianselvitystä varten (1 = vähän, 2 = enemmän, ...) |
config_prefix | viha_ | evästeiden etuliite, tarpeellinen jos samassa palvelimessa useita erillisiä ViHa-instansseja |
Käyttäjän käyttöoikeus operaatioon, kalustoon, henkilöstöön jne selvitetään seuraavassa järjestyksessä. Kun yhteen kohtaan tulee osuma, ei seuraavia enää tutkita:
Tämän tarkastuksen ja eräitä muita yleisiä tarkastuksia toteuttavat funktiot permission_ids(alue_id,paivystys_id) ja permission_tab(taulu,id), joiden paluuarvot ovat linjassa muiden tarkastusfunktioiden kanssa.
Käyttöoikeuksia voidaan määritellä kolmella tasolla:
Tietokantarivien oikeuksia tarkastellaan normaalikäyttäjälle seuraavasti:
Sellaisissa näytöissä, joissa käsitellään vain yhteen operaatioon kuuluvia tietoja, näytetään vain kyseiseen operaatioon kuuluvat tiedot.
Alueiden olisi hyvä olla selvyyden vuoksi sellaisia, että ne eivät mene päällekkäin. Pakkoa tähän ei ole, mutta päällekkäin osuvat alueet vaikeuttavat käyttöoikeuksien hahmottamista.
Mikäli omia tila- ja/tai sijaintikoodeja luodaan, kannattaa muistaa seuraavat nyrkkisäännöt:
ViHa tukee useita operaatioita yhtä aikaa. Käyttäjän oikeuksista riippuu, mitä operaatioita hän näkee. Mikäli käyttäjällä on oikeus useampaan operaatioon, hän voi siirrellä lähes kaikkea tietoa näiden operaatioiden välillä. Oikeus käsitellä useampaa operaatiota tuo käyttäjälle laajemman päävalikon.
Operaatioista yksi on kulloinkin valittuna ja perustoiminnot kohdistuvat siihen.
Operaatiokohtaista materiaalia voidaan tallettaa sovelluksen juurihakemiston alla olevaan hakemistoon operaatio/id, missä id on operaation numerokoodi (paivystys.id). Jos tällainen hakemisto on olemassa, siellä olevat tiedostot näytetään päävalikossa. Näihin tiedostoihin ei ole tehty operaatiokohtaisia pääsyrajoituksia, eli sinne ei saa tallettaa tietoa jonka tulee pysyä vain yhden operaation tiedossa.
Tietojen peruskäsittelyä voidaan tehdä kahdella tasolla: taulu.php olettaa operaatioksi valitun ja alueeksi valitun operaation alueen. taulu0.php antaa mahdollisuuden käsitellä myös operaatiota ja aluetta. Tarkastusfunktiot huolehtivat siitä, että operaatio ja alue pysyvät keskenään synkronoituina.
Valintalistat järjestetään normaalisti valittavan kohteen mukaan aakkosjärjestykseen. Jos listalla näytetään muutakin tietoa (alue, operaatio), järjestetään lista ensisijassa alueen, toissijaisesti operaation ja kolmanneksi valittavan kohteen mukaan.
Henkilön asemakoodit lajitellaan kuitenkin aina prioriteetin (=arvoasema) mukaan.
Mikäli tietokannan rakennetta muutetaan, tulee tarkastaa myös tiedostot tarkasta-kanta.php, ohje-guru.html (taulukko synkronoinnista) ja sync.php .
Sarake jarjesto.paivystys_id ei ole enää käytössä eikä ohjelmisto välitä sen arvosta.
Järjestön katsotaan olevan mukana operaatiossa jos yksikin siihen kuuluva henkilö on mukana operaatiossa.
Aina kun henkilö otetaan operaatioon, asetetaan hänet hälyryhmän jäseneksi (hlo.halyssa = 1, hlo.paivystys_id = paivystys.id).
Otettaessa tai vapautettaessa täytyy huomioida hlo.ryhma_id ja hlo.hlo_tila_di.
Aina kun henkilö vapautetaan, hänet poistetaan myös hälyryhmästä (hlo.halyssa = 0, hlo.paivystys_id = 1).
Aina kun henkilö otetaan hälyryhmään, otetaan hänet samalla operaatioon (hlo.halyssa = 1, hlo.paivystys_id = paivystys.id).
Aina kun henkilö poistetaan hälyryhmästä, hänet vapautetaan myös operaatiosta (hlo.halyssa = 0, hlo.paivystys_id = 1).
Päävalikossa voidaan valita sivun lopussa olevilla linkeillä erilaisia profiileja, jotka on taulukoitu ohessa:
Profiili | Kaikki | Johto | Sihteeri | Viesti |
---|---|---|---|---|
conf | 0 | 100 | 200 | 300 |
tilanne | X | X | X | X |
tilanne-taysi | X | X | X | X |
tilanne-kalusto | X | X | X | |
lapset-taysi | X | X | X | X |
taktinen-loki | X | X | X | X |
tyotunnit | X | X | X | |
ryhma-takt | X | X | ||
hlo-takt | X | X | X | |
tap-takt | X | X | X | X |
ryhma-miehitys | X | X | X | X |
hlo-oper | X | X | X | |
jarjesto-takt | X | X | X | |
laite-oper | X | X | ||
kalusto-takt | X | X | ||
kadonnut | X | X | X | X |
tap | X | X | X | X |
hlo | X | X | X | |
ryhma | X | X | X | X |
verkko | X | X | ||
jarjesto | X | X | X | |
laite | X | X | ||
tavara | X | X | ||
paivystys-takt | X | X | X | X |
paivystys-valinta | X | X | X | X |
paivystys-loppu | X | X | X | |
paivystys | X | X | X | |
kayttajat | X | |||
salasana | X | X | X | X |
logoff | X | X | X | X |
tarkasta-kanta | X | X | ||
hlo_tila | X | X | ||
hlo_asema | X | X | ||
ryhma_tila | X | X | ||
paikka | X | X | X | |
laite_tyyppi | X | X | ||
tavara_tyyppi | X | X | ||
tilanne0 | X | X | ||
hlo0 | X | X | X | |
ryhma0 | X | X | X | |
kadonnut0 | X | X | X | X |
tap0 | X | X | X | |
hlo_tila0 | X | |||
ryhma_tila0 | X | |||
paikka0 | X | X | X | |
laite0 | X | X | ||
tavara0 | X | X | ||
hlo_ajat0 | X | X | ||
alue | X | |||
osaaminen | X | |||
tekninen-loki | X | X | ||
replicate | X | X | ||
sync | X | |||
ohje | X | X | X | X |
ohje-guru | X | X | ||
viha-esitys | X | |||
historia | X | X | ||
lisenssi | X | X | X | X |
testaus | X |
Päivitettäessä ViHaa versioon, joka aiheuttaa tietokannan muutoksen, tulee samalla ajaa kerran päivitysskripti, joka tekee kantaan vastaavat muutokset. Päivitysskriptit on nimetty kanta-v.vv.mysql. Vaihtoehtoisesti kannan voi alustaa kokonaan uudelleen mutta tällöin syötetyt tiedot häviävät.
Kantamuutosskriptejä ei voi jättää väliin vaan kaikki tarvittavat on ajettava järjestyksessä.
Päivitettäessä ViHaa aiemmista versioista 5.00:aan ja sen jälkeisiin versioihin on huomattava, että käyttäjätunnusten hallinta muuttuu kokonaan sovelluksen vastuulle. Www-palvelimesta on avattava pääsy ViHa-hakemistoon.
Päivitysskripti asettaa kaikille saman salasanan, joka käy ilmi itse skriptistä. Salasanat on syytä muuttaa mitä pikimmin.
Myös käyttöoikeuksien hallinta muuttuu. Oikeudet on syytä tarkastaa päivityksen jälkeen.
Päivitysskripti perustaa uuden alueen, "Määrittelemätön alue", johon sijoitellaan kaikki objektit jotka vaativat tietyn alueen. Tämä alue on tarkoitettu käytettäväksi siirtymäkaudella.
Tapahtumakirjaukset tulee käsin tai SQL:llä sijoittaa oikeisiin operaatioihin (ryhmän mukaan), mikäli ne kuuluvat operaatioihin, joiden ID-numero (4.14 version kannassa) on > 9. Pienemmillä ID-numeroilla varustetut operaatiot käsittelee päivitysskripti.
Tietokannan oletussalasanojen ja tietokannan käyttäjätunnusten käsittelyä on muutettu niin, että erilaiset salasanat talletetaan nyt /etc/viha - hakemistossa olevista tiedostoista. Harjoitus- ja pääkannalle asetetaan eri käyttäjätunnukset (ja pitäisi asettaa eri salasanat). Oletuskäyttäjätunnus kantaan on nyt "viha" ja read only - tunnus on poistettu.
Tässä yhteydessä kannasta on syytä poistaa (nyt tarpeettomat) tunnukset ts ja tu, vaikkapa komennolla "DROP USER ts@localhost, tu@localhost".
Kantaan tulee lisätä uudenlaiset read only - tunnukset, jotka ovat muotoa kantatunnus_ro. Näille asetetaan sama salasana kuin vastaavalle kantatunnukselle mutta ainoastaan SELECT-oikeus. Valmis apuskripti do-5.21 suorittaa tämän sekä tekee kantaan muut tarvittavat muutokset.
Replikointia varten tarvitaan uusi hakemisto (oletus: /home/viha).
taktinen_loki.id on jatkossa yksilöllinen. Muuntoskripti yrittää tehdä tämän siististi.
Replikointi tarkoittaa sitä, että itsenäinen ViHa-instanssi (etä-viha) hakee kopion verkossa olevan ViHa-instanssin (pää-viha) datasta määräajoin.
Kun replikointi on päällä, tietoja voidaan etä-vihassa selailla mutta ei päivittää. Tämä toteutetaan kirjautumalla tietokantaan tunnuksella, joka ei mahdollista tietojen päivittämistä. Päivitysyritys aiheuttaa enemmän tai vähemmän kryptisen virheilmoituksen.
Replikoinnin toteuttava shell-skripti sijaitsee www-palvelimen ulkopuolella, yleensä hakemistossa /home/viha . Sieltä ajetaan määräajoin cronilla shell-scripti do-autoreplicate, jota ohjaa kaksi konfigurointitiedostoa.
Replikoinnin pääkonfiguraatiotiedosto autoreplicate.conf sijaitsee replikoinnin kotihakemistossa, ja siellä on jokaista replikoitavaa tietokantaa kohden yksi rivi, jossa on seuraavat tiedot välilyönnillä tai tabulaattorilla erotettuina:
Tieto | Esimerkki | Huomattavaa |
---|---|---|
Lipputiedoston sijainti | /var/www/htdocs/viha3/flagfile | Tämän tiedoston nimi on toistaiseksi kovakoodattu palvelimeen, ainoastaan hakemiston nimeen tulee koskea |
IP-osoite tai DNS-nimi, jossa pää-viha sijaitsee | bar.foo.fi | |
Käyttäjätunnus pää-viha - koneeseen | viha | |
Käytettävän SSH-avaimen tiedostonimi | .ssh/id_client | |
Replikoitavan tietokannan käyttäjätunnus | viha | |
Replikoitavan tietokannan nimi | tilanne3 | |
Paikallisen tietokannan nimi | tilanne3 |
Mikäli lipputiedostosta löytyy sana "yes", suoritetaan replikointi, muuten ei. Lipputiedoston tulee olla www-palvelimen kirjoitettavissa. Pääkäyttäjä voi kääntää replikointilipun päälle tai pois replikointi-näytön kautta. Huomattavaa on, että replikointi tapahtuu asynkronisesti cronista käsin. Tarvittaessa replikoinnin voi ajaa myös komentoriviltä.
Lipputiedoston sisältö ohjaa myös käytettävää tietokannan käyttäjätunnusta. Mikäli yes-sana löytyy, käytetään kantaan kirjautuessa read only - tunnusta. Tällöin päävalikkoon tulee ylimmäksi varoitusteksti siitä, että replikointi on päällä ja tietoja voi vain selailla.
Synkronointi on tarkoitettu avuksi tilanteisiin, joissa toimitaan itsenäisen ViHa-instanssin (etä-viha) turvin tilanteessa, jossa verkkoyhteyttä ei ole tai verkossa oleva ViHa (pää-viha) ei ole käytettävissä.
Etä-viha tulee käyttöä odotellessa pitää replikoituna pää-vihasta ja synkronointi on tehtävä mahdollisimman nopeasti. Tämän jälkeen etä-viha pitää taas replikoida.
Ennen synkronointia tulee varmistua siitä, että sekä pää-vihan että etä-vihan tietokannoista on olemassa ajantasainen varmuuskopio.
Etä-vihan palvelimen kellon tulisi olla ajassa mahdollisimman tarkasti.
Synkronointi tapahtuu aina kahden ViHa-instanssin kesken. Kantojen versionumeroiden on oltava samat.
Synkronointi ei koskaan poista tietoja.
Kovakoodattuja ID-numeroita ei muuteta.
Instanssien kesken täysin identtiset tiedot jätetään ennalleen.
Jos tiedot ovat oleellisilta osiltaan samat, jätetään kantaan myöhempi tieto.
Jos tiedot ovat erilaiset, tehdään uusi tietue.
Käyttöoikeustietoja ei synkronoida. Taulu suoja tyhjennetään synkronoinnin yhteydessä molemmista päistä.
Tietoturvasyistä synkronointi olisi syytä tehdä esimerkiksi seuraavasti:
ssh -N -i id_client -R 127.0.0.1:3366:127.0.0.1:3306 viha@bar.foo.fi
Taulut käsitellään seuraavassa järjestyksessä:
Taulu | Sarakkeet, joiden perusteella määritetään yksilöllisyys | Kovakoodatut ID-numerot | Päivitettävät taulut | Erityistoimenpiteet |
---|---|---|---|---|
versio | (kaikki) | Jos eroa, anna virheilmoitus äläkä synkronoi. | ||
juuei | (kaikki) | Jos eroa, anna virheilmoitus äläkä synkronoi. | ||
hlo_ajat_tyyppi | (kaikki) | Jos eroa, anna virheilmoitus äläkä synkronoi. | ||
suoja | Tyhjennetään molemmista (sic!) | |||
alue | alue | 1-3 | hlo, hlo_ajat.variable_id, hlo_tila, jarjesto, kadonnut, kayttajat_alue, laite, loki, loytynyt, osaaminen, paikka, paivystys, ryhma, ryhma_tila, tap, tavara | hlo_ajat.variable_id erikoiskäsittely |
hlo | nimi | hlo_ajat, kayttajat, laite, osaaminen_hlo, tavara | Jos synkronointien välillä eri instansseihin perustetaan samannimiset henkilöt, toinen katoaa. Tämä huomataan tosin seuraavan kerran kadonnutta henkilöä perustettaessa, kun perustaminen ei onnistu. | |
hlo_ajat | hlo_id, hlo_ajat_tyyppi_id, variable_id, ts | |||
hlo_asema | hlo_asema | 1-9 | hlo, hlo_ajat.variable_id | hlo_ajat.variable_id erikoiskäsittely |
hlo_tila | alue_id, paivystys_id, hlo_tila | 1-5 | hlo | |
jarjesto | jarjesto, alue_id | 1-2 | hlo, laite, tavara | |
kadonnut | nimi, kello | |||
kayttajat | 1-2 | Ei synkronoida! | ||
laite | jarjesto_id,laite,tunniste | |||
laite_tyyppi | laite_tyyppi | 1 | laite | |
lapsi_tila | lapsi_tila | 1-4 | kadonnut, loytynyt | |
loki | alue_id, paivystys_id, data, ip, user, ts | Data sisältää lainausmerkkejä, jotka hoidettava! | ||
loytynyt | nimi,kello | |||
osaaminen | alue_id, paivystys_id, osaaminen | 1-18 | osaaminen_hlo | |
paikka | alue_id, paivystys_id, paikka | 1-4 | ryhma | |
paivystys | alue_id, nimi, alkoi | 1-2 | hlo, hlo_ajat.variable_id, hlo_tila, jarjesto, kadonnut, kayttajat_paivystys, laite, loki, loytynyt, osaaminen, paikka, paivystys_tuki, ryhma, ryhma_tila, taktinen_loki, tap, tavara | hlo_ajat.variable_id erikoiskäsittely |
ryhma | alue_id,paivystys_id,kutsu | 1 | hlo, hlo_ajat.variable_id, laite, paivystys.johto_ryhma_id, paivystys.viesti_ryhma_id, paivystys_tuki, tap, tavara, | hlo_ajat.variable_id erikoiskäsittely |
ryhma_tila | alue_id,paivystys_id,ryhma_tila | 1-13 | ryhma | |
taktinen_loki | paivystys_id,data,ip,user,ts | |||
tap | alue_id,paivystys_id,ryhma_id,tap,ts | |||
tavara | jarjesto_id,hlo_id,tavara,tunniste | |||
tavara_tyyppi | tavara | 1-9 | ||
verkko | verkko | 1-8 | laite,paivystys.oletus_verkko_id,ryhma | |
kayttajat_alue | kayttajat_id, alue_id | Päivittynyt kuntoon aiemmilla kierroksilla. (Jos duplikaatteja, poista vanhimmat) | ||
kayttajat_paivystys | kayttajat_id, paivystys_id | Päivittynyt kuntoon aiemmilla kierroksilla. (Jos duplikaatteja, poista vanhimmat) | ||
paivystys_tuki | paivystys_id, ryhma_id | Päivittynyt kuntoon aiemmilla kierroksilla. (Jos duplikaatteja, poista vanhimmat) | ||
osaaminen_hlo | hlo_id, osaaminen_id | Päivittynyt kuntoon aiemmilla kierroksilla. (Jos duplikaatteja, poista vanhimmat) |
Tähän taulukkoon on koottu ViHan keskeisimpiä termejä eri kielillä.
Suomeksi | In English |
---|---|
Alue | Area |
Aluevastaava | Area manager |
Pääkäyttäjä | Administrator |
Henkilö | Person |
Hälytysryhmä | Team |
Järjestö | Organisation |
Operaatio | Operation |
Sijainti | Location |
Ryhmä | Squad |
Tila | Status |
Kalusto | Equipment |
Viestivälineet | Radio equipment |
Tavarat | Other equipment |
Monikulttuuristamisessa käytetään työkaluna gettext - kirjastoa.