Norske språkfiler på Zimbra

Dessverre har ikke de norske språkfilene til Zimbra blitt tatt med i den offisielle versjonen av Zimbra ennå, men de eksisterer takket være Philip Gabrielsen og Roy Sigurd Karlsbakk. De siste oppdateringene er gjort av Roy Sigurd, og Philip har tilgang til SVN-repositoryet til Zimbra-xtras på SourceForge

For å laste ned språkfilene første gangen har jeg gjort følgende på min server:

mkdir -p /opt/ZmTranslations
cd /opt/ZmTranslations
svn co https://zimbra-xtras.svn.sourceforge.net/svnroot/zimbra-xtras/trunk/ZimbraTranslations/data/Norwegian_no/messages SVN_NO

Deretter at jeg lagt inn følgende script i /opt/ZmTranslations/update_translations.sh

#!/bin/bash
cd SVN_NO
svn update
#cp *.properties /opt/zimbra/jetty-6.1.5/webapps/zimbra/WEB-INF/classes/messages/
#cp *.properties /opt/zimbra/jetty-6.1.5/webapps/zimbraAdmin/WEB-INF/classes/messages/
#cp ZsMsg*.properties /opt/zimbra/conf/msgs/

cp *Msg*.properties /opt/zimbra/jetty/webapps/zimbra/WEB-INF/classes/messages/
cp *Msg*.properties /opt/zimbra/jetty/webapps/zimbraAdmin/WEB-INF/classes/messages/
#cp *Keys*.properties /opt/zimbra/jetty/webapps/zimbra/WEB-INF/classes/keys/
#cp *Keys*.properties /opt/zimbra/jetty/webapps/zimbraAdmin/WEB-INF/classes/keys/
#cp *ZsMsg*.properties /opt/zimbra/conf/msgs/

su – zimbra -c ‘zmprov fc locale’
su – zimbra -c ‘zmprov fc config’
su – zimbra -c ‘zmprov fc domain’
su – zimbra -c ‘zmprov fc server’
su – zimbra -c ‘zmprov fc skin’
su – zimbra -c ‘zmprov fc zimlet’

Hver gang jeg kjører dette scriptet, så oppdateres oversettelsene til siste versjon, filene kopieres ut i riktige mapper, og det kjøres en flush av oversettelsescachen på serveren (merk at jeg kjører flushcache på flere ting enn bare locale, siden jeg kjører dette scriptet manuelt hver gang jeg trenger å gjøre flush av noen av enkeltkomponentene som jeg gjør endringer på).

Foredraget mitt fra GoOpen 2010 om Zimbra

Da var foredraget mitt om Zimbra i Tønsberg og Nøtterøy kommuner gjennomført på GoOpen (nervene begynner å gi seg nå, 7 timer etterpå… Første gangen jeg har holdt et så stort foredrag)

Film fra foredraget ligger ute hos Vimeo

Selve foredraget har jeg gjort tilgjengelig her i ODF og PDF-format. Selvfølgelig er det CC-BY-SA ;)

Her er også et lite bilde av meg på scenen (Takk til kollega Lars Eik )

Foto: Lars Eik

Fått meg ny netbook

Kom tilfeldigvis over et greit tilbud på netbook i romjula, og har nå (endelig) fått tak i den. Det er en DELL Inspirion mini, med bl.a. 160GB disk, greit tastatur, 10,1” skjerm, 1,6GHz Atom-prosessor og 1GB RAM (men RAMen tror jeg må oppgraderes…).

Tenkte jeg skulle ta å forsøke å lære meg å bruke litt nyere Windows og Office-versjoner også, siden jeg hverken har prøvd Vista eller Windows 7 ennå, og har brukt OpenOffice som eneste kontorstøttesystem siden ~ 2004. Har fått inn Windows 7 nå, og har installert Office 2007 og Visio 2007 (beste produktet Microsoft noensinne har kjøpt er Visio!).

Nå sitter jeg å tester litt på Windows Live Writer for å skrive blogg-innlegg, og får vel teste litt på Office i løpet av kvelden.

Hvordan vi har satt opp Zimbra

Nok en uke har gått, og i løpet av uka har jeg primært jobbet med å sette Zimbra i produksjon som nytt gruppevaresystem for skolene i Tønsberg og Nøtterøy kommuner. Vi kjører fra før av Novell eDirectory som katalogtjeneste og Novell NetMail som mailserver via IMAP, og vi måtte derfor ha på plass to ting.

  • Synkronisering av brukerdatabase fra eDirectory til Zimbra, siden Zimbra har sin egen OpenLDAP-database
  • Migrering av epost fra NetMail til Zimbra

Den første biten gjorde jeg ganske enkel, med et PHP-script som går igjennom hele LDAP-katalogen og lager kommandoer som kan brukes til zmprov:

<?php

$defaultpassword = 'defaultpassword_for_user';

$ldap1_con = ldap_connect("ldap://10.5.48.10");

if($ldap1_con) $ldap1_bind = ldap_bind($ldap1_con, 'cn=admin,o=VESTFOLD', 'very_secret_password');

if(!$ldap1_bind) die("LDAP1-bind failed...(".ldap_error($ldap1_con).")");

$findattrs = array("cn", 'description',  'fullName', 'sn', 'mail', 'givenName', 'title', 'company');

$search = ldap_search($ldap1_con, 'o=VESTFOLD', '(&(objectClass=Person)(|(title=Elev)(title=Laerer)(company=IKT)))', $findattrs);

if(!$search) {
 // Search failed.
 echo "LDAP-errno: ". ldap_errno($ldap1_con)."\n";
 echo "LDAP-Error: " . ldap_error($ldap1_con)."\n";
}
$ldap = ldap_get_entries($ldap1_con, $search);
$output = NULL;
for($i=0;$i<$ldap['count'];$i++) {
 $mail = $ldap[$i]['mail'][0];
 $splitmail = split("@", $mail);
 if(strpos($mail, "nottkom.no")) $kommune = 'Notteroy';
 elseif(strpos($mail, "notteroy.kommune.no")) $kommune = 'Notteroy';
 elseif(strpos($mail, "tbgskole.no")) $kommune = 'Tonsberg';
 elseif(strpos($mail, "tonsberg.kommune.no")) $kommune = 'Tonsberg';

 if($kommune == 'Tonsberg') $maildomain = 'tbgskole.no';
 elseif($kommune == 'Notteroy') $maildomain = 'nottkom.no';

 if($ldap[$i]['company'][0] == 'IKT') $policy = 'iktpolicy'; // IKTpolicy
 elseif($ldap[$i]['title'][0] == 'Laerer') $policy = 'laererpolicy'; // Laererpolicy
 elseif($ldap[$i]['title'][0] == 'Elev') $policy = 'elevpolicy'; // Elevpolicy
 else $policy = 'default';

 $username = $ldap[$i]['cn'][0]."@".$maildomain;
if(strpos($mail, $ldap[$i]['cn'][0])) $createalias = 0; // Mail contains username, do not create alias
 else $createalias = 1;

 $output .= "ca ".$username." $defaultpassword\n"; // Create account
 $output .= "ma ".$username." displayName '".$ldap[$i]['givenname'][0]." ".$ldap[$i]['sn'][0]."'\n";
 $output .= "ma ".$username." zimbraNotes 'Migrated ".date("Ymd H:i")."'\n";
 $output .= "ma ".$username." sn '".$ldap[$i]['sn'][0]."'\n";
 $output .= "ma ".$username." givenName '".$ldap[$i]['givenname'][0]."'\n";
 $output .= "ma ".$username." ou '".$ldap[$i]['company'][0]."'\n";
 $output .= "sac ".$username." '".$policy."'\n";
 if($createalias) {
 $output .= "aaa ".$username." ".$splitmail[0]."@".$maildomain."\n";
 $output .= "ma ".$username." zimbraPrefFromAddress '".$splitmail[0]."@".$maildomain."\n";
 }
 $output .= "ma ".$username." zimbraPrefLocale no\n"; // Set default language to norwegian

#       $output .= "aal -s SADM-MAIL02.ped.local ".$username." zimbra.soap debug\n";
#       echo $ldap[$i]['cn'][0]."\n";
}

echo $output;

Lagre dette scriptet som eDir2Zimbra.php, og kjør det med php på kommandolinje (eller kjør det via en webserver og lagre teksten som kommer et sted på Zimbra-serveren

php eDir2Zimbra > /tmp/add_zimbraaccounts

Deretter kan den fila brukes som input til zmprov

su - zimbra -c 'zmprov < /tmp/add_zimbraaccounts'

Har ikke lagt inn muligheten for å deaktivere kontoer automatisk i Zimbra ennå, men scriptet kan trygt kjøres mange ganger. Må vel oppdatere scriptet rett over sommeren, når en god del av lærere og elever har sluttet “offisielt” i kildesystemene mine, slik at kontoene blir disablet i eDirectory.

Migrering av e-post

Denne biten trodde jeg at jeg hadde rimelig klar. NetMail kjører all mailen i mbox-format, og jeg tenkte derfor orginalt å kjøre denne metoden:

  • Konvertere mbox til maildir via et av mange script for å gjøre det
  • Deaktivere autentisering mot eDirectory for domenet, og dermed ha standardpassordet definert i scriptet over på alle brukerne
  • Kjøre et av mange script for å flytte fra maildir til remote IMAP-server

Fikk dette til å fungere rimelig greit, men oppdaget når jeg testet med et par elever, som i hovedsak hadde fått masseutsendte eposter, at NetMail for å spare plass flytter ut mailer som er over 4k og sendt til flere enn 5 mottagere til et eget felleslager. Alle referansene i mbox-fila til dette felleslageret skapte problemer, og mailene kunne ikke (i hvertfall ikke lett) flyttes over.

Fordi NetMail lagret mailen i så sært format, så fant jeg ut at jeg for enkelthets skyld skulle bruke IMAP2IMAP-synkronisering. Testet litt med IMAPsync, og den fungerte rimelig greit, men jeg måtte ha passordet til alle brukerne for å foreta migreringen. Jeg vurderte det til at jeg kunne nullstille passordet til alle 8000 brukere, men vi har akkurat hatt en sak med elever som har fått tilgang til læreres passord, og byttet sine egne karakterer/fravær, og en slik prosess må nødvendigvis gjøres ekstremt kontrollert. Bestemte meg derfor at jeg ville forsøke å sniffe passordet til alle brukerne i stedenfor… (Yeah, I know: ugly som bare det, men jeg har i hvertfall fått det til å fungere).

Jeg kunne gjøre det på flere måter

  • Sniffe brukernavn og passord på IMAP med ethercap mot den gamle NetWare-servere
  • Sniffe brukernavn og passord på IMAP med ethercap mot den nye Zimbra-serveren
  • Prøve å få Zimbra/webmailen til å gjøre passordet til brukeren tilgjengelig på en eller annen måte

Å prøve å sniffe passordet via NetWare-serveren slo jeg ganske fort fra meg. Hovedønske er å få alle brukerne over på nytt system, og det ville være vanskelig å få bytta over brukerne til nytt system, hvis de må logge seg inn på det gamle, og noen skal flyttes over til det nye “etterhvert”.

Å sniffe passordet mot IMAP på Zimbra-serveren kunne vært en mulighet, men jeg prioriterte det ned som løsning, da jeg ikke ønsker at brukerne skal bruke den gamle webmailen (integrert del av LMS-systemet vårt), men det nye å flotte webgrensesnittet til Zimbra. Det ville da være unaturlig å be brukerne om å “bruk den gamle et par ganger, og så benytt den nye etterpå”.

Jeg begynte først å leke litt med muligheten for å lage en Zimlet som foretar import av mail fra den gamle serveren, men fant ikke noen gode howtoer på området, og jeg ikke orket å bruke lang tid på prosjektet, for å lære meg å kode Zimlet’er. Lekte også litt med å legge inn en javascript-prosess tok i mot passordet man logget på med, og sendte det videre til et separat system. Greide her ikke å bli fortrolig med kodestilen til Zimbras JSP-kode, så slo det også fra meg.

Gikk til slutt videre med å titte på debug-loggene man kunne aktivere på en bruker, for å se om de hadde mulighet til å logge passordet til brukeren. Hverken IMAP eller POP-så ut til å logge passordene, men SOAP-interfacet logget disse ved pålogging på webmailen. Brukte derfor scriptet over til å lage en kommando fo å aktivere logging på alle brukere:

 $output .= "aal -s SADM-MAIL02.ped.local ".$username." zimbra.soap debug\n";

Dette skal også kjøres via zmprov som over-

Etter dette, skrev jeg et kjapt script for å lete igjennom loggene etter brukernavn og passord, logge dette til en database, og så kjøre sletting av loggingen på den aktuelle brukeren. Fra databasen lagde jeg et nytt separat script som startet opp imapsync med riktig brukernavn og passord, og da var det bare for brukerne å logge inn, og vente til den gamle mailen dems var flyttet over til det nye flotte gruppevaresystemet vårt.

Har installert Zimbra gruppevare-system

På skolenettet i kommunen har vi Novell eDirectory, og har gratis-mailsystemet Novell hadde i 2004 kalt NetMail for alle elever og lærere, med IMAP-tilkobling og lesing i LMSen. Denne mailserveren har vi bare hatt mer og mer problemer med etterhvert som årene har gått, og det faktum at den kjører på NetWare, noe ingen av oss på avdelingen egentlig har peiling på, gjør ikke problemene noe mindre.

Satte meg i forrige uke ned og testet mange forskjellige open source-gruppevaresystemer. I utgangspunktet hadde jeg et par små krav:

  • Helst kjøre på Linux
  • Bør være open source eller gratis (vi betaler ikke per-bruker-lisens for skoleelever ned til 6 år; muligens kommer vi også til å ha kontoer for barn i barnehager når vi bare finner ut av hvordan vi skal løse det med at de ikke kan lese).
  • Bør ha et greit administrasjonsgrensesnitt
  • Må fungere med brukerdatabasen fra eDirectory (og gjerne også ha støtte for Active Directory).
  • Må fungere både som webbasert (for mest mulig funksjonalitet), og med IMAP (fortsatt mulighet til å bruke rett fra LMSen for de som ikke har behov for funksjonaliteten som kommer med å ha gruppevaresystemet.

Hadde på forhånd blitt anbefalt om Zimbra fra en bekjent, som er utviklet av Yahoo!. Vi hadde sett litt på det på avdelingen, og var enige om at det AJAX-baserte grensesnittet var veldig bra, og at Zimbra løste mange (om ikke de fleste) problemene vi hadde hatt med LMSen og nåværende mailserverløsning.

Satte i gang installasjonen av Zimbra, men slet lenge med å få til autentisering mot eDirectory. Ingen av dokumentasjonene jeg greide å finne viste noe relevant for problemene mine. Jeg ga til slutt opp, og begynte å labbe på noen andre løsninger. I forbindelse med testing av en av disse løsningene, fant jeg dokumentasjon som viste seg å være relevant. I NetMail har vi opprettet mange brukerkontoer, og for lærere har vi opprettet alias-objekter som fornavn.etternavn for å få disse som e-post-adresser. Disse alias-objektene ser ut som ordinære brukere når de listes opp i LDAP, og dermed ble problemet at uansett hvordan man søkte etter brukere, så fikk man to svar, og Zimbra og de andre gruppevareløsningene greide ikke å bestemme hvilken av disse brukerobjektene den skulle bruke, og ga feilmelding på det. Flyttet alle aliasene ut fra OUene for brukerne, og problemet var løst.

Har nå satt opp Zimbra for test for endel skoler, og det ser ut til å fungere rimelig bra. Zimbra er en skalerbar løsning, og forhåpentligvis vil vi etterhvert få en veldig god e-post-løsning, med mye funksjonalitet. Gleder meg allerede til vi kan sette dette i produksjon.

Nagios er forket, og med god grunn

Fikk en kollega inn på kontoret til morgenen i dag, og fikk høre at Nagios var forket til ICINGA, noe som jeg var veldig overrasket over. Begynte øyeblikkelig å gå igjennom mailer som har kommet inn på Nagios-devel-lista det siste døgnet, og så rimelig kjapt at det var en god grunn for forkingen.

Hovedutvikleren for Nagios, Ethan Galstad har jobbet med Nagios siden 1999, og produktet har vokst seg stort innen open source-bevegelsen, og er en så godt som standard for open source overvåking av tjenester. I løpet av disse ti årene har det blitt et kjempestort community med mange som jobber for å gjøre Nagios bedre, og prosjektet har blitt enormt mye større enn Ethan, men fortsatt er Ethan den eneste som har tilgang til å legge inn patcher og gjøre forbedringer på kildekoden. En slik lukking av  open source-prosessen gjør at man ikke kan overleve i lengden.

I tillegg til en veldig lukket prosess, så har Ethan startet et eget selskap, Nagios Enterprises, og har brukt det siste året til å tvinge andre Nagios-selskaper til å slutte å bruke navnet “Nagios”. Ethan har brukt tiden på å juridiske ting, i stedenfor å gjøre den jobben folk forventer at han skal gjøre; utvikle Nagios!

Det har vært endel debatt på mailinglisten om hvorvidt ICINGA kommer til å lykkes eller ei, og foreløpig er jeg av den konklusjonen at de kommer til å lykkes, utelukkende på grunn av en enkelt mail fra Ethan, hvor han skriver at utviklingen ikke er død, fordi ting skjer “behind the scenes”, i form av supportkontrakter og “beskyttelse av varemerket Nagios”. Altså ingen svar på den faktiske kritikken av at programmeringen går for sakte.

Nei Ethan, nå har du veldig kort tid på deg til å faktisk gjøre noe med kritikken, ellers skifter jeg til ICINGA. Det er svært sjeldent at noen forker et open source-prosjekt, men når det gjøres, er det stort sett fordi ting ikke fungerer lenger, og det er ikke ofte det er relatert til at produktet er for dårlig!

Nagios plugin for DNS roundrobin checks

We use DNS roundrobin to give students access to diffrent Windows terminal servers. One of the people in my department wrote a perlscript to check which servers are currently in production by checking what servers has a A-record in “tscluster.ped.local”. I’ve rewritten parts of this small script to be able to use it as a Nagios plugin. No more problems with nobody actually fixing problems with servers after they have been taken out of production because of testing, reinstallation or errors.

check_dnscluster — download

These are the nagios configuration defintions I use:

define service {
use            generic-service
hostgroups        skole-windows-terminalserver-group
check_command        check_dnscluster!tscluster.ped.local!10.5.48.44
service_description    Skole-WTS innmeldt i cluster
servicegroups           skole-tscluster-servicegroup
check_interval        30
}

define command {
#./check_dnscluster.pl -s 10.5.48.44 -A tscluster.ped.local -H 10.5.49.32
command_name        check_dnscluster
command_line        $USER1$/check_dnscluster.pl -H $HOSTADDRESS$ -A $ARG1$ -s $ARG2$
}

define servicegroup
servicegroup_name    skole-tscluster-servicegroup
alias            Alle servere i tscluster
}

Automatic network graphing with Cacti

I love graphs and statistics, and have used Cacti for some years for this. However, I’ve got a network that is larger than what can be set up manually in the GUI, and I often don’t have the time to update cacti whenever I setup a new switch, and forget it later. As such, it has to be automated.

What I do is set it up with the discovery-plugin for automatic discovery of all hosts on a network, and autocreate graphs for all interfaces. This is how I’ve done it.

Cacti installation

aptitude install snmp
cd /var/www
wget http://www.cacti.net/downloads/cacti-0.8.7d.tar.gz
tar zxfv cacti-0.8.7d.tar.gz
mv cacti-0.8.7d cacti && cd cacti

Get the latest version of cactiplugin from cactiusers.org:

wget http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7d-PA-v2.4.zip
unzip cacti-plugin-0.8.7d-PA-v2.4.zip
patch -p1 -N < cacti-plugin-0.8.7d-PA-v2.4.diff

If you get some rejected files, view what couldn’t be applied and edit those files manually. I got an error in include/global_constants.php and have to insert that part manually

Cacti Patch-install

Cacti Patch-install

The three lines marked with a + has to be inserted manually in include/global_contants.php around line 175 (just remember to not cut’n’ paste and include the + as I did once :P )

Edit include/global.php and change $database_default to your database name, $database_hostname, $database_username and$database_password to your database credentials.
Also, you need to change the path to the base of your cacti installation in $config['url_path'] to ‘/cacti/’;

mysql -u root -p
Password: <insert your password here>
CREATE DATABASE cacti;
GRANT ALL PRIVILEGES ON cacti.* TO ‘cactiuser’@'localhost’ IDENTIFIED BY ‘cactiuser’;
source cacti.sql;

Go too http://your.server.address/cacti/ and complete the installation, and login as admin/admin. If everything looks OK, go back to your shell download discovery from cactiusers.org.

cd plugins
wget http://cactiusers.org/downloads/discovery.tar.gz
tar zxfv discovery-0.8.5.tar.gz
cd ../include

Edit global.php and around $plugins, add a new line for discovery:
$plugins[] = ‘discovery’;

And last, but not least; add poller.php to your crontab:
crontab -e
Add the line:

*/5 * * * * php /var/www/cacti/poller.php &>/dev/null

That should make your cacti-installation ready, and your hosts checked every 5 minutes.

Configuring Cacti Discovery


In Cacti, go to Settings -> Misc
Add your subnets to Subnet to scan, in my example, I run it against 10.0.4.0/25
Add your SNMP community name to SNMP Community. The first community you enter will be the first tested, so you should probably add your there, and have public as a backup and last.
I usually set Poller Frequency to once every week, but for testing, it might good to have it every 1 hour.

Rerun Data Queries should be set on, so that changes to your switches gets updated
Create Graphs for Up Interfaces Only is something you would have to find out yourself if you want. If you put it on, you will only graph interfaces that are actually up, and if you are mostly interested in your uplinks or haven’t got a lot of bandwidth to your switches, you should check it, but you want to know the bandwidth usage on your clients, you should leave it unchecked.

In the menu, go to Discovery Templates, and add a new template.

New hosts doesn’t automatically come into Cacti because Cacti needs to know what kind of device it is (server, switch, coffee-machine, etc.).
In the new template, select Host Template and choose Generic SNMP-enabled Host.
In SNMP Version, choose the SNMP-version in use on your network (I use version 1, as that works on most units).
In System Description, write something you expect to find in all your switches (I have all Ciscos in my network, so I’d expect to find “Cisco” in the description).

You should now get hosts showing up in your Device-list, after the time specified in Poller Frequency. However if you are like me, you are too lazy to wait an hour before the devices show up.
Instead, you can run the command to discover manually:
php plugins/discovery/findhosts.php -f -d

Changing graph names

When findhosts.php has run, you should have some automatically created graphs. However, they show up in the name of “host – Traffic – interface number”

Names of Cacti graphs after they are automatically created

Names of Cacti graphs after they are automatically created from findhosts

This really doesn’t help much, as I usually don’t know what’s on every port in my network. I do however know some of the ports, and have written what they are in the description of all ports that are uplinks or have servers/other special devices.

To change this, you can go to Data Queries -> SNMP – Interface Statistics -> In/Out Bits

Suggested Values are the prioritized list of names for graphs (name), and the graph title (title) displayed inside the graph.

Here you might have to experiment a little with what you want, but what I’ve used fits my equipment very good.

Graph names I use

Graph names I use

If one of the variables in the line is not set, that line will not be used, and the next line will be tested instead. You should experiment a little with how your own network does this. After changes in suggested values, you should run the command

php cli/poller_graphs_reapply_names.php -id=All

Lekt litt med piwik for analyse av webtrafikk

Jeg har (som mange andre) brukt Google Analytics endel de siste årene, og syns det er et herlig produkt. Ble positivt overrasket når jeg testet piwik på et par av websidene mine i tillegg til Google Analytics. Det er helt tydelig at produktet ikke er ferdig, men den er oppbygd utrolig fleksibelt, i tillegg til at man beholder kontroll over egen data; Google (eller andre leverandører) sitter ikke på mine data og kan bruke disse i egne prosjekter.

Alle de viktigste funksjonene som er tilstede i GA er i piwik også, men man kan også skrive sine egne plugins og manipulere ting på egenhånd. Utifra hva jeg greier å se av noen av plugin-kodene, så ser det rimelig ryddig og greit ut å gjøre.

Eneste som jeg irriterer meg over nå, er at det ser ikke ut til at man kan bytte sitt eget passord i GUI, og når man som administrator skal sette et nytt passord så vises passordet i klartekst (og da vil jeg selvfølgelig ikke sette et ordentlig passord på noen mens jeg har masse folk rundt meg). Ser også ut til at første admin-brukeren som opprettes ikke ligger inne i databasen, men i config-fila, noe som selvfølgelig gjør det vanskelig å stenge seg selv ute fra systemet, men som også gjør at ting ikke stemmer når man er flere som skal administrere ting.

En annen irriterende ting er at dev-siden ikke er operativ, så man ikke får gått inn på utviklersiden og bug/feature-request-sidene for å se på hva som ligger av ønsker og roadmap… Men den kommer vel opp etter påske en gang.

WarDrive-runde i Tønsberg

Nå er det lenge siden jeg har vært å kjørt søndagstur i Tønsberg med laptop, WLAN og GPS. Tok meg en to timers lang kjøretur i dag, og fant nesten 1600 nettverk.

Kjøringen min gikk fra Shell på Korten, litt rundt i sentrum, over Træleborg, Solvang, Eik, Kongseik, og via Klokkeråsen/Slagen tilbake til Solvang hvor jeg bor. Dataen har blitt lastet opp på WiGlE.net og jeg har lastet det ned selv til Google Maps.

Håper jeg greier å få tatt en tur rundt Nøtterøy i den nærmeste fremtid også.

Oversiktsbilde over funnene mine

Oversiktsbilde

KML-fil for Google Maps over dagens funn