Hackerangrep og re-indeksering

De siste par dagene har vi hatt to kjipe ting samtidig:

  • http://www.vegvesen.no/om+statens+vegvesen/presse/nyheter/Nasjonalt/massivt-angrep-mot-vegvesenets-ikt-struktur
  • Alle tjenester på vegvesen.no har de siste par dagene vært utsatt for tjenestenektangrep, og derfor utilgjengelige, helt eller delvis. Ett av tiltakene er at tilgangen fra utlandet er blokkert til flere av våre tjenester, for eksempel NVDB api, ruteplantjenesten, datex m.fl. norske IP-adresser en stund fremover — minimum fram til over langhelgen.
  • Vi måtte re-indeksere NVDB api’et i går ettermiddag. Det gir opp til 8 timer med ustabilitet i NVDB api’et.

Vi beklager ulempene.

Hvis IP-blokkeringen gir problemer – ta kontakt, så ser vi på muligheten for å oppheve blokkeringen for din IP.

NodeJS – wrapper for NVDB api

Thomas Alrek har laget en NodeJS-wrapper for NVDB api’et. Data lastes asynkront fra NVDB api. Vi takker aller hjerteligst, og håper dette kan være til nytte for flere, og at vi får se mange gode, snappy webapplikasjoner med NVDB data.

var vegvesenClient  = require("vegvesen");
var vegvesen = new vegvesenClient();
vegvesen.connect(function(){
    vegvesen.vegobjekter.spesifiktVegobjekt(82559833, function(obj){
        console.log(obj);
    });
});

Modulen og kildekoden er tilgjengelig under en GPL-lisens, og er tilgjengelig på github. Der finnes også flere eksempler på bruk, installasjon m.m.

Påskeegg, replikeringsfeil og datafeil i kontraktsområdene

Søkeindeksen bak vegkart og NVDB-apiet betjenes av 5 søkemotor-noder. Vi opplever fortiden problemer med at disse nodene er kommet i utakt som en følge av feil med replikeringen. Dette påvirker responsen for alle objekttypene i NVDB, spesielt dersom du søker med områdefilter. Vi må derfor gjøre om på oppsettet av disse nodene og deretter foreta en full reindeksering. Vi håper å få dette gjort så fort som overhode mulig, kanskje allerede i kveld, senest i løpet av påskeuken.

Vi har også en datafeil med kontraktsområdene våre. Det har blitt opprettet uhorvelig mange kontraktsområder i enkelte kommuner og dette har trigget en feil i API’et. Her jobber vi med å rette opp data og korrigere API’et; dette håper vi er på stell like over påske.

God påske.

Utviklerutgave av skrive-apiet tilgjengelig på docker-hub

Vi har nå gleden av å tilby en utviklerutgave av NVDB Skrive-API. Denne er tilgjengelig via docker-hub. Utviklere som ønsker å skrive data til NVDB kan dermed få kjøre en virtuell utgave av  skrive-apiet på sin maskin.

Om NVDB skrive api

Skrive-apiet er et asynkront REST-API som tar imot Endringssett på vårt eget vegobjekt-format. Skrive-apiet er tett knyttet opp mot NVDB og Datakatalogen. For å kunne bruke Skrive-API’et i produksjon, må du:

  • Ha bruker i Statens Vegvesen, med NVDB roller i LDAP
  • Få tildelt datarettigheter i skrive-apiet til de objekttypene, de vegkategoriene og de områdene du ønsker å skrive data for.
  • Ha kjennskap til Datakatalogen: Alle objekter som skal skrives blir strengt validert mot siste utgave av datakatalogen.
  • Ha kjennskap til Vegnettet i NVDB: Skrive-apiet krever at objekter er stedfestet på vegnettet (med angitt veglenkeid og posisjon).

En oversikt over NVDB API’ene, med tilhørende kode-eksempler er tilgjengelig her: https://github.com/nvdb-vegdata/nvdb-utviklerkonferanse-2015 Dokumentasjonen til skrive-apiet pakkes og distribueres sammen med applikasjonen og er inkludert i utviklerutgaven.

Om utviklerutgaven

Denne utviklerutgaven mocker all Statens vegvesen infrastruktur, inkludert NVDB databasen, men lar deg få lov til å utforske kommunikasjonen med API’et og validere dine data. Denne varianten har ingen vegdata og skriver heller ingen data til NVDB. Det er altså bare for å kunne utvikle mot APIet. Den inneholder imidlertid siste versjon av datakatalogen og kan validere innsendte data mot denne.

Docker-utgaven oppdateres når vi oppdaterer skrive-apiet i akseptansetestmiljøet, den vil altså følge neste produksjonskandiat av apiet. Datakatalogen oppdateres fortløpende.

For å få tak i docker-utgaven:

  1. Installér Docker https://docs.docker.com/engine/installation/
  2. Kjør docker run -d -p 8080:8080 –name nvdb-skriveapi nvdbapnevegdata/nvdb-skriveapi
  3. For å stoppe kjør docker stop nvdb-skriveapi

Når docker kjører:

Om alt har gått bra er Skrive-apiet nå tilgjengelig på http://localhost:8080/ på en Linux-maskin. For Windows og Mac kjører docker daemon i en Linux VM og localhost må erstattes med korrekt IP-adresse. For å finne denne åpne et command prompt/terminal og kjør kommando docker-machine ip.

Når man åpner denne siden i nettleseren vises en side der man kan velge innlogging. Dette er ikke knyttet til reelle brukere, men dummybrukere som kun lever i SDKen. Når bruker er valgt vil man bli sendt til /nvdb/apiskriv. Her ligger lenke til dokumentasjonen av APIet, og en testklient som kalles Generator.

Generator-klienten viser eksempler på requester som sendes til APIet, og forventet respons fra APIet.

Logge inn i skrive-apiet programatisk

For å opprette en sesjon programmatisk kan du POSTe ønsket user-id til /login (eks: user-id=toillbaill). Da blir en serversesjon opprettet. For å bruke denne sesjonen må du bruke JSESSIONID-cookien som returneres ved login.

Feilsøk:

Loggene til Skrive-APIet nås ved å utføre:

docker exec -it nvdb-skriveapi bash
cd maven/apache-tomcat-8.0.32/logs

Re-indekseringens forbannelse

Oppdatering 9.3.2016: Vi har fått bekreftet at re-indekseringen var vellykket (ferdig om ettermiddagen 8.3) og at automatisk oppdatering fungerer. 

Vi var nødt til å tømme datalageret bak NVDB api’et og fylle det på ny. Mer presist måtte vi gjøre en full re-indeksering av søkeindeksen. Og det tar jo noen timer!

Vi beklager på det sterkeste de ulempene dette medførte! Både internt i Vegvesenet og eksternt har vi mange brukere som ikke får gjort det de skal når Vegkart og NVDB api’et ikke er oppdatert.

I fremtiden håper vi å kunne gjøre denne typen oppdatering i bakgrunnen, uten at dere andre merker noen ulemper. Men vi kan dessverre ikke love når det kommer på plass.

Når re-indekseringen er ferdig vil vi som vanlig skru på automatisk oppdatering, slik at endringer i NVDB automatisk speiles over i søkeindeksen – og dermed i NVDB api og vegkart.

Følg oss på twitter! https://twitter.com/nvdbapi


Nå er det ENDA enklere å lage søk mot NVDB api

Vis eksportvalg. Eller "last-ned-data-pila", som jeg kaller det. (eller «eksporter data» som er mouseover-teksten) har fått ny funksjonalitet: Du får nå fiks ferdig lenke til et gyldig søk mot NVDB api’et.

"Vis eksportvalg" har fått ny funksjon. Der det står API finner du lenken til eksakt det samme søket som Vegkart bruker mot NVDB api.

«Vis eksportvalg» har fått ny funksjon. Der det står API finner du lenken til eksakt det samme søket som Vegkart bruker mot NVDB api.

Dette forenkler utvikling mot NVDB api vesentlig. Fremfor å mekke på søkeobjekt fra nettleserens adressefelt (denne oppskriften) henter man nå fungerende NVDB api-søk direkte fra vegkart.

 

Vi gratulerer Vegvesenet med ny fagblogg

Vi vegnettsnerder på vegdata.synes flere fagfolk burde «blogge på seg», og fortelle litt mer om det de driver med. Derfor GRATULERER hjerteligst vi våre kolleger som forsker på ny og kreativ bruk av teknologi innen trafikksikkerhet, miljø og vegteknologi. Vi som jobber med NVDB har en del samarbeid med dem, og vet at de gjør mye spennende og bra.

Ellers presenterer de bloggen sin best selv:

Velkommen til På-veg-bloggen vår. Vi har latt oss inspirere av Statens vegvesens visjon som forteller at vi er på veg for et bedre samfunn. For å komme oss dit trenger vi stadig påfyll av ny kunnskap, nye metoder og ny teknologi som kan hjelpe oss til å få folk trygt fram på en måte som ikke skader mennesker og miljø.

Vi som blogger arbeider med forsknings- og utviklingsoppgaver på Trafikksikkerhets-, miljø og teknologiavdelingen i Statens vegvesen Vegdirektoratet. Her vil vi dele faglige synspunkt og sette søkelyset på teknologiske løsninger og utviklingsprosjekt som kan bidra til en sikrere og mer miljøvennlig vegtrafikk.

Vi er stadig «På veg..», noe som betyr at mange av sakene vi skriver om utviklings- og forskningsoppgaver som ikke er avsluttet og der sluttstrek enda ikke er satt. Faglige diskusjoner er en viktig del av det å være på veg. Vi er derfor takknemlig for dine innspill og tilbakemeldinger som kan hjelpe oss i videre arbeidet.

Adressen er https://paavegblogg.wordpress.com/

Og som alle wordpress-blogger: RSS-feed er https://paavegblogg.wordpress.com/feed/

Bruk Vegkart for å komme i gang med NVDB api

En godt skjult hemmelighet er hvordan webapplikasjonen vegkart gjør livet enklere for deg som skal i gang med å høste ferske NVDB data direkte fra NVDB api. Vegkart gjør at du kommer i gang fortere, enklere og med langt mindre plunder!

Gjør deg kjent med data i Vegkart!

Dette burde være opplagt, men det er mange som overser nytten av å gjøre seg kjent med datasettet, både før man programmerer, og underveis i prosessen. Mange tabber og mye knot hadde vært unngått med å bare grave litt rundt og få litt føling med datasettet

  • Hva finnes, og hvor finnes det data? Er det forskjell i dekning mellom f.eks. de ulike delene av landet? Eller finnes data kun på hovedvegene? Har kun et fåtall av kommunene lagt inn data på det kommunale vegnettet?
  • Bruk også datakatalogen i vegkart til å lære mer om mulige egenskaper på de objektene du ønsker.
  • De egenskapene du ønsker å bruke — finnes de? Selv om din drømmeegenskap er definert i datakatalogen betyr det ikke nødvendigvis at det finnes data lagt inn i NVDB.

Et kjapt vegkart-søk lærer deg mye om hva som finnes i NVDB, hvor det finnes og hva det kan brukes til!

Vegkart gir deg et ferdig søkeobjekt!

NVDB api’et søkefunksjon er et kraftfullt verktøy, men kan være litt plundrete å komme i gang med.

Nå er det vesentlig enklere enn før – ny oppskrift her!

 

Oppskriften nedenfor ble utdatert i vegkart-versjon lansert oktober-2015 – men vi har erstattet den med en ny og vesentlig enklere metode.

Bak stien https://www.vegvesen.no/nvdb/api/sok? skal man føye til nøkkelordet og verdien kriterie={søkeobjekt}. Vi synes selvsagt vi har vært grasat flinke til å skrive dokumentasjon og veiledning med flere eksempler på hvordan man bygger opp et søkeobjekt — men innser at mange plundrer med dette.

Vegkart er redningen — i stien til ditt favorittsøk i Vegkart er det nemlig gjemt et søkeobjekt!

Ved å kopiere søkeobjekt fra nettleserens adressefelt kan datautforsking i Vegkart anvendes direkte som ditt første søkeeksempel mot NVDB api. La oss si at du søker etter bomstasjoner med takst under 30 kroner i et spesielt vakkert geografisk område:

Vegkart-søk Hvor er bomstasjonene der det ikke koster mer enn 30 kr å passere?

Hvor er bomstasjonene der det ikke koster mer enn 30 kr å passere?

Lenken til dette vegkart-søket er såkalt URL encodet, det vil si at spesialtegn som krøllparanteres er erstattet med prosentkoder. Mange teksteditorer kan dekode dette direkte, eller man kan finne online URL dekodere på nett. For eksempel denne.

meyerweb URL encoder/decoder. Fiffig online verktøy for å oversette prosentkode-grøt til lesbar tekst.

meyerweb URL encoder/decoder. Fiffig online verktøy for å oversette prosentkode-grøt til lesbar tekst. Merk disclaimeren!

Når jeg setter inn et par linjeskift og mellomrom så blir det jo bortimot lettlest:

https://www.vegvesen.no/vegkart/vegkart/#!/
kartlag:geodata/
vegreferanse:260452.12090424:6556932.0971975/
sok:{
     "lokasjon": {
         "bbox": "262973,7033178,287844,7046873"
     },
     "objektTyper": [{
         "id": 45,
         "antall": "15000",
         "filter": [{
             "type": "Takst liten bil",
             "operator": "<=",
             "verdi": ["30"]
         }]
    }]
}

Den våkne leser har selvsagt for lengst oppdaget at alt bak sok: er det JSON søkeobjektet som vi har beskrevet i dokumentasjonen. Alt som gjenstår er å føye til teksten

{«lokasjon»:{«bbox»:»262973,7033178,287844,7046873″},»objektTyper»:[{«id»:45,»antall»:»15000″,»filter»:[{«type»:»Takst liten bil»,»operator»:»<=»,»verdi»:[«30»]}]}]}

bak lenken https://www.vegvesen.no/nvdb/api/sok?kriterie= 

Som da selvsagt blir https://www.vegvesen.no/nvdb/api/sok?kriterie={«lokasjon»:{«bbox»:»262973,7033178,287844,7046873″},»objektTyper»:[{«id»:45,»antall»:»15000″,»filter»:[{«type»:»Takst liten bil»,»operator»:»<=»,»verdi»:[«30»]}]}]} Lenken er klikkbar, men ettersom du da gjør en spørring uten å angi riktig media-Type så er du ikke garantert at resultatet kan vises i din nettleser (ms-ie pleier spørre deg hva du vil gjøre med den json-fila du nettopp fikk, mens Google chrome pleier laste ned og vise XML formattert i nettleser).

Avhengig av klienten du bruker og nettverket ditt kan det hende du må URL encode denne lenken før den brukes — gjør gjerne det, for sikkerhets skyld!

I tillegg til å formattere spørring korrekt skal klientene oppgi ønsket Media-type, det vil si en såkalt http-header der du ber om nvdbdata som enten JSON eller  XML. Se dokumentasjonen.

kreditering — Open Street Map i bakgrunnskart VegKart

I Vegkarts bakgrunnskart bruker vi nå data fra Open Street Map for å vise vegnettet utenfor Norges grenser. Dette skal selvsagt behørig krediteres.

Utenfor Norges grenser viser vi nå data fra Open Street Map

Utenfor Norges grenser viser vi nå data fra Open Street Map

Vi har lagt inn kreditering av Open Street map — sammen med norske bidragsytere (NVDB, Geovekst og kommunene) som et lite tekstfelt i utkanten av kartflaten på Vegkart. Akkurat slik som det skal gjøres:

Eksempel på gyldig OSM akkreditering.

Eksempel på gyldig OSM kreditering. Slik skal vi ha det i Vegkart!

Dessverre vil det ta TID før denne endringen blir satt i produksjon. Men i løpet av 3 måneder skal alt være på plass. Vi kan også føye til at korrekt kreditering inngår i metadata fra bakgrunnskart-tjenesten vi bruker.