Lund 1995-01-29 Presentation av projekt "News Arkiv" ************************************ Företagsekonomiska institutionen vid Lunds universitet har på uppdrag av Skolverket implementerat två programvaror för UNIX. Programvarorna har till syfte att arkivera artiklar ur befintlig och kommande Usenet News konferenser, initierade av Skolverket inom ramen för projektet "Skoldatanätet" samt att erbjuda ett enkelt, men kraftfullt WWW-gränssnitt till arkiven. Resultatet av projektet skall ge elever och lärare ökade möjligheter att kunna läsa inlägg i Usenet News konferenserna. Projektet ger ett synnerligen enkelt gränssnitt till Usenet News, vilket kommer att sänka barriären för många att börja använda systemet. Dessutom tillför det arkiverings- och sökfunktioner, vilket är _nya_ funktioner. Projektansvarig: Göran Isberg Idé och programutveckling: Johan Svensson Beskrivning: ============ NewsArchiver ------------ NewsArchiver (NA) startas automatiskt (t.ex. var 20:e minut dygnet runt) och bevakar en Usenet News grupp. Har nya artiklar anlänt sedan sist, hämtas dessa hem och lagras i ett filarkiv. Detta program kommer endast systemadministra- tören i kontakt med. NA är ett enkelt program som "pratar" NNTP-protokollet med en news-server, precis som vilket news-klientprogram som helst. NA kräver att news-servern förstår "XHDR"-kommandot, vilket i praktiken inte är någon begränsning. NewsArchive-to-WWW-Gateway -------------------------- NewsArchive-to-WWW-Gateway (NA2WWW) är ett Forms-baserat WWW-gränssnitt mot en eller flera NewsArchive(s). Man kan välja grupp, hur många av de senaste inläggen man vill lista och (valfritt) om man vill söka efter en viss text - antingen känsligt eller okänsligt för gemener/versaler. Bland finesserna (som man inte skall märka!) kan nämnas att artiklar som är postade med "MIME Quoted/printable" blir avkodade till ren iso-8859-1 HTML. NA2WWW kräver att WWW-klienten kan hantera "Forms", vilket de flesta program- men som NCSA Mosaic, NetScape och Lynx gör. Bakgrund ======== 1. Usenet News servers har, som de flesta känner till, en funktion som heter "expire", d.v.s. att artiklar tas bort efter en viss tid, t.ex. efter en vecka, fjorton dagar, etc. Eftersom skolorna kommer att koppla in sig hos alla möjliga och omöjliga leverantörer, kommer några att kunna läsa artiklarna i en grupp i en vecka, andra i en månad och andra kanske inte alls p.g.a. att deras leverantör inte förser dem med "rätt" nyhetsgrupper. Som namnet antyder är NewsArchiver ett arkiveringsprogram, varför man kan gå tillbaks (om man vill) upp till 20 000 artiklar bak i tiden. Denna funktion kan man givetvis ha på en Usenet News server också, om man inte ställer in en "expire"-tid, men det är nog att hoppas på för mycket att _alla_ newsfeeds gör så. 2. När vi startade projektet använde alla WWW-läsare en metod "Get article by Message-ID", vilket i och för sig News-server programvaran INN stödjer, men det är av erfarenhet inte så i alla andra programvaror. Detta resulterar i att man, med WWW-läsaren, kan läsa rubrikerna i en grupp, men man kan inte hämta artiklar, vilket är en liten nackdel... 3. News-läsnings funktionen i olika WWW-läsare (Mosaic, Netscape, etc.) börjar nu bli ganska bra, men vi kunde inte lita på att utvecklingen kommer att gå den väg vi vill. Med en WWW-gateway vet vi hur systemet fungerar på alla läsare, oavsett om man använder lynx, Mosaic eller Netscape (eller annan). 4. I NA2WWW kan man söka efter texter i ett godtyckligt antal artiklar bak i tiden - det kan man _inte_ med WWW-läsare (inte än i alla fall). 5. NA2WWW kan man ställa in att visa texter (dock inte innehållet i artiklar!) på godtyckligt språk - svenska språket ligger här nära till hands vad gäller mellanstadie-elever och uppåt. 6. NA2WWW konverterar artiklar med "MIME Quoted/printable" till iso-8859-1 HTML. Det fixar inte WWW-läsarna än. Troligtvis kommer i nästa version konvertering ske av artiklar som postas med den svenska 7-bitars över- sättningstabellen (måsvingar...), förutsatt att de är MIME-märkta. Det kommer _ingen_ WWW-läsare att fixa på många år framöver om ens någonsin, p.g.a. att det är ett marginellt, lokalt problem i Sverige. 7. NA2WWW kan man ställa in så att den visar information om vad respektive grupp innehåller - i bästa fall kan man få en kort beskrivning på en rad från Usenet News servern, men det är faktiskt bara ett fåtal grupper som utnyttjar denna beskrivning - här slarvas det! Dessutom kan man direkt läsa regler för gruppens användning och liknande information. Mycket nyttigt för (inte minst) nybörjare. Det finns säkert fler fördelar, som jag inte kommer på - upplys mig gärna! Givetvis finns det säkert nackdelar, _MEN_ tycker man att det är för många nackdelar kan man ju läsa News på sedvanligt vis - fiffigt va? Framtiden ========= I mån av tid kommer jag att uppdatera programmen - åtminstone lite grann. Om intresse finns för att skräddarsy programmen, eller införa nya funktioner kan ni kontakta mig. Oftast kostar det en liten slant, men ni får gärna ändra i koden själva eller anlita någon annan att göra det. Jag har försökt skriva programmen så rent som möjligt, så det torde inte vara allt för svårt att sätta sig in i algoritmerna. Glöm inte att läsa igenom och följa innehållet i filen COPYING-2.0! Installation ============ NewsArchiver ============ Programmen ---------- Kopiera filerna 'NA' och 'NewsArchiver' till ett programbibliotek. Se till att de är körbara ('chmod +x NA', resp. 'chmod +x NewsArchiver'). NA är ett script som sätter upp exekveringsmiljön för NewsArchiver. Har du inte tillgång till en version av NewsArchiver för ditt UNIX-system, måste du kompilera programmet först och då räknar jag med att du vet vad du gör! Det skall inte vara några konstigheter. Globala inställningar --------------------- Redigera NA - du behöver ta reda på var följande UNIX-kommandon finns: rm touch tee grep printf (ingår i GNU's shellutils) Det gör du enklast genom att skriva kommandot 'which rm', som då kommer att skriva ut sökvägen till rm (t.ex. '/bin/rm'). Redigera även sökvägarna till det logg-bibliotek (NALOGS) du tänker använda. Skapa nu ett bibliotek för loggarna och ett för newsarkiven. Standard är: /usr/data/WWW/NewsArchive/Logs (för loggarna) och /usr/data/WWW/NewsArchive/Groups (för arkiven) Bibliotek --------- I dessa båda bibliotek måste du sedan skapa ett bibliotek för varje grupp du tänker arkivera. Skall du arkivera gruppen 'swnet.test', måste du följdaktligen skapa dessa bibliotek: /usr/data/WWW/NewsArchive/Logs/swnet.test (för loggar) och /usr/data/WWW/NewsArchive/Groups/swnet.test (för arkivet) Gruppinställningar ------------------ Skapa nu en inställningsfil (en för varje grupp du skall arkivera) - ta den medföljande swnet.org.skolverket.skol-net som mall. Redigera den efter din intuition! Test ---- Nu är det dags att testa en körning. Ge kommandot 'NA swnet.test' (eller den grupp du tänkt arkivera). Har allt gått som det skulle, skall du nu få en utskrift på skärmen liknande denna: Group: swnet.test Query issued 1995-01-29, 16:44:59, local time. Archive path: /usr/data/WWW/NewsArchive/Groups/swnet.test SUMMARY: Got 34 articles Rejected 0 articles Lost 0 articles Time 2 seconds Automatik i crontab ------------------- Som du förstår är det inte speciellt trevligt att behöva ge detta kommando flera gånger om dagen manuellt. Därför kan du lägga in automatiserade körningar i crontab(1). Konsultera ditt UNIX-systems handböcker hur detta fungerar. Här kommer ett exempel för Linux, där programmet körs tre gånger i timmen för varje grupp: # NewsArchiver system: # Get swnet.org.skolverket.skol-net: 1,21,41 * * * * /usr/data/WWW/NewsArchive/bin/NA swnet.org.skolverket.skol-net # Get lu.framtid: 2,22,42 * * * * /usr/data/WWW/NewsArchive/bin/NA lu.framtid # Get swnet.general: 3,23,43 * * * * /usr/data/WWW/NewsArchive/bin/NA swnet.general # Get lu.inst.fek: 4,24,44 * * * * /usr/data/WWW/NewsArchive/bin/NA lu.inst.fek Se gärna till så att NewsArchiver körs olika tider för varje grupp, så att maskinen belastas så jämnt som möjligt. Ta även hänsyn till andra "batch"- jobb som utförs på samma dator. Nu skall arkiveringen sköta sig själv. Går något galet kan du konsultera loggarna för att se vad som hänt. Du bör även rensa logg-biblioteken t.ex. en gång i månaden. NA2WWW ====== Programmet ---------- Kopiera filen 'NA2WWW' till ett programbibliotek för cgi-program. Se till att det är körbart ('chmod a+x NA2WWW'). NA2WWW är alltså ett s.k. CGI (Common Gateway Interface) program och det måste exekveras på en UNIX-maskin som samtidigt är en WWW-server. Konsultera handboken för din httpd-server! Har du inte tillgång till en version av NewsArchiver för ditt UNIX-system, måste du kompilera programmet först och då räknar jag med att du vet vad du gör! Det skall inte vara några konstigheter. Gruppinställningar ------------------ Skapa nu en inställningsfil (en för varje grupp du skall arkivera) - ta den medföljande swnet.org.skolverket.skol-net som mall. Varje gruppfil måste ligga i samma bibliotek som NA2WWW. Här är ett exempel på en gruppfil: # Configuration file for NewsArchive: group swnet.test # # # which nntp-server to connect to: NNTPSERVER news.lu.se # which port to connect to (default 119): NNTPPORT 119 # name of group to archive: GROUPNAME swnet.test # absolute path to root of group-archive: GROUPROOT /usr/data/WWW/NewsArchive/Groups # Entries below this line is only read by NA2WWW - not NewsArchive # ================================================================ # Program name (used to create temp-files PROGNAME swnet.test # The URL-path to NA2WWW gateway program PROGPATH /cgi-bin/NA2WWW # A writable temp-dir TEMPDIR /tmp # Your official WWW-server name SERVERNAME ecsdg.lu.se # Path to abstract-file (displayed when listing a group) ABSFILE /usr/data/WWW/htdocs/NA2WWW/swnet.test.abs # Path to author-file (displayed at bottom of each document) AUTHFILE /usr/data/WWW/htdocs/NA2WWW/swnet.test.auth # This is what NA2WWW writes for certain headers: # There is a limit of five (5) distinct words for each item. A-FROM Från A-GROUPS Grupper A-SUBJECT Ämne A-DATE Datum A-ORG Organisation A-LINES Rader A-MID Artikel-ID A-KEYW Nyckelord A-REF Refererar A-DISTR Distribution A-IN-REP Svar på A-REP-TO Svar till # Here are some additional user-configurable strings: # There is a limit of five (5) distinct words for each item. # Default title of the produced HTML document S-PROGTITLE Newsarkiv: swnet.test # Default header of the produced HTML document S-PROGHEAD Test-grupp S-PREV Föregående artikel (tidsmässigt) S-NEXT Nästa artikel (tidsmässigt) S-TO-LIST Till listan S-QUERY Informationen hämtad HTML-Form --------- För att dina användare (och du själv!) skall kunna använda arkiv-programmet, måste du ha en HTML-sida som laddar NA2WWW. Ta en titt i den medföljande filen 'skolarkiv.html'. Först kommer lite sedvanlig HTML-kod. Efter det kommer det intressanta:
Med FORM börjar formuläret och ACTION anger vilket program som skall köras när man trycker på SUBMIT-knappen (se nedan).

Välj grupp:

SELECT NAME ger oss en lista över de arkiv du vill ha och variabeln "group" sätts till rätt val och skickas vid SUBMIT till NA2WWW.

Visa bara de senaste:

SELECT NAME ger oss en lista över hur många artiklar vi vill hämta eller söka i. Du kan ändra dessa siffror och det val som gjorts läggs in i variabeln "latest" till NA2WWW. Observera att "alla" eller "all" ger oss alla (eller maximalt 20 000) artiklar.

Sökalternativ:

Hämta bara artiklar som innehåller följande text:

Lämna blankt om du inte vill göra ett urval!
Skilj mellan versaler och gemener (stora och små bokstäver)

Ovanstående sektion ger oss möjlighet att söka efter ett urval av angivna artiklar (en grupp och ett antal artiklar ur denna).
Ovanstående rader ger oss två knappar - "submit" skickar iväg frågan med ovanstående variabelvärden till NA2WWW och "reset" nollställer de värden vi tidigare fyllt i. Svårare än så är det inte! Övrigt ====== Email till: NA@ecsdg.lu.se (frågor ang. NewsArchiver) NA2WWW@ecsdg.lu.se (frågor ang. WWW-gateway) Prototyp: http://ecsdg.lu.se/NA2WWW/skolarkiv.html Programmen kommer att vara "freeware", men upphovsrättsskyddade genom GPL (GNU GENERAL PUBLIC LICENSE) version 2. De kan hämtas med ftp, gopher eller http i biblioteken: ecsdg.lu.se/pub/unix/NA/ ecsdg.lu.se/pub/unix/NA2WWW/