STATIE Auteur: Frank Meisschaert Versie: 7 juni 2007 1 Inleiding Tussen verschillende administraties worden tal van gegevens uitgewisseld. Daarvoor worden tal van communicatiemechanismen voor gebruikt, alnaargelang de aard van de gegevens, de uitwisselingsfrequentie en de grootte van de gegevens. In veel gevallen bestaat de uitwisseling uit een bestand dat van 1 keer per week tot enkele keren per dag getransfereerd wordt. Netwerk shares, ftp/sftp servers, rcp/scp servers, websites worden daarvoor ad hoc opgezet. Qua veiligheid is dit toch niet ideaal en zelfs als de configuratie aan de strengste veiligheidseisen voldoet dan steken flexibiliteitsissues de kop op. Statie werd ontwikkeld als een veilig alternatief om files tussen verschillende administraties uit te wisselen. Statie is een centraal station dat gebruik maakt van https. Zowel interactieve als geautomatiseerde uploads zijn mogelijk. 2 Statie De basis url voor statie bestandsuitwisseling is https://webster.ugent.be/statie/ Als voorbeeld wordt een bestandsuitwisseling tussen studentenadministratie en personeelsadministratie genomen. Dagelijks wordt de lijst van studenten doorgegeven aan de personeelsdienst en in omgekeerde richting de lijst van doktoraatsbursalen. Iedere uitwisseling gebeurt op een 'perron', een subdirectory van de statie url. In ons voorbeeld: https://webster.ugent.be/statie/pers-stud/ Door de studentenadministratie wordt 1 file 'studenten.txt' geplaatst: https://webster.ugent.be/statie/pers-stud/studenten.txt Door de personeelsdienst worden 2 files geplaatst: 'bursalen.txt' en 'stud-pers.txt', de lijst van studenten uit studenten.txt die ook personeel zijn. https://webster.ugent.be/statie/pers-stud/bursalen.txt https://webster.ugent.be/statie/pers-stud/stud-pers.txt 3 Bestandsuitwisseling Statie maakt gebruik van Basic Authentication. De veiligheid wordt gegarandeerd door de S in HTTPS. Statie kent de personeelsadministratie als 'pers' en de studentenadministratie als 'stud'. pers heeft schrijfrechten op bursalen.txt en stud-pers.txt terwijl stud schrijfrechten heeft op studenten.txt. Beiden hebben leesrechten op de 3 files. Downloaden van de file is eenvoudig: plaats de url in je browser of gebruik wget of curl of iets dergelijks. De upload is iets complexer. Interactief gebruik je https://webster.ugent.be/statie/pers-stud/studenten.txt?page=upload Daar staat een form waarmee je de file kunt uploaden. Het uploaden gebeurt via een POST request naar de url https://webster.ugent.be/statie/pers-stud/studenten.txt curl laat toe om zo'n POST request vanop de command line uit te voeren. De nieuwe file is slechts beschikbaar als de upload volledig is. Tot dan wordt de vorige versie aangeboden. Een simultane up- en download is geen probleem: bij het downloaden krijg je of de volledige oude versie, of de volledige nieuwe versie. Ook bij 2 simultane uploads blijft de integriteit bewaard. Welke van de twee dan beschikbaar wordt is niet bepaald. 4 Extra informatie De pagina https://webster.ugent.be/statie/ toont een lijst van alle perrons op statie. Voor ieder perron waar je leesrechten hebt op 1 of meerdere treinen kun je ook doorklikken naar het perron-overzicht. Het overzicht van alle treinen op het perron vind je ook via de perron-url, bvb: https://webster.ugent.be/statie/pers-stud/ Deze pagina is enkel toegankelijk voor identiteiten die leesrechten hebben op 1 van de treinen op het perron. Voor de treinen waarop je leesrecht hebt kun je doorklikken op de link om de file te downloaden. Als je schrijfrecht hebt zie je ook een 'upload' link die doorverwijst naar de upload pagina. Voor iedere trein is ook het tijdstip van de laatste upload en het tijdstip van de laatste wijziging zichtbaar. Naast het overzicht per perron kun je ook per trein informatie opvragen. Dit doe je door '?page=info' aan de trein-url toe te voegen, bvb: https://webster.ugent.be/statie/pers-stud/studenten.txt?page=info Dit geeft een tekst-bestand terug met parameters en waarden gescheiden door tabs: perron pers-stud trein studenten.txt upload_time 2007-03-01T17:05:01Z modify_time 2007-02-28T17:05:02Z Als een trein nog niet op statie staat, dan zie je de parameter 'not_yet_uploaded' i.p.v. de time parameters. Door het tekstformaat wordt automatisatie gemakkelijker. 5 Automatisatie Verschillende programma's en libraries kunnen gebruikt worden om een https download en upload te automatiseren. Een voorbeeld met 1 van die programma's, curl, wordt hier voorgesteld. Een download kan met de volgende curl configuratie file 'studenten.curl' geautomatiseerd worden: url = https://webster.ugent.be/statie/pers-stud/studenten.txt user = pers:xxxxxxxx De download gebeurt dan met het commando: curl -K studenten.curl -o data/studenten.txt De upload is even eenvoudig automatiseerbaar: url = https://webster.ugent.be/statie/pers-stud/studenten.txt user = stud:yyyyyyyy form = file=@/path/to/studenten.lijst met upload commando aan de studentenadministratie kant: curl -K studenten.curl curl is zeer flexibel. Je kunt alle opties in een configatiefile zetten of je kunt een minimale configuratie file gebruiken. 'man curl' geeft je de nodige informatie. Let vooral op de certificaat opties of gebruik 'insecure' als je geen gebruik wil maken van certificate verification. Ook de 'silent' optie is interessant: in output wil je immers enkel zinvolle informatie zien. Een progress balk heeft weinig betekenis bij een nachtelijke automatische uitwisseling. 6 Administratie Een administratie interface moet nog ontwikkeld worden. Ook de '...?page=upload' pagina kan een laagje vernis gebruiken maar dit is voor later. Een heel eenvoudige administratie-interface is nu beschikbaar: een mailke naar statie@UGent.be.