Request Tracker

Se RequestTracker for mer generell informasjon.

Teknisk implementasjon

Mesteparten av endringene som er gjort er gjort innenfor RT selv, ved å endre på de medfølgende templatene slik at de passer våre behov bedre og får systemet til å ligne med på en mailingliste. Når det gjelder mailinterfacet, er itk@ og itk-comment@ satt opp via RTs eget script "rt-mailgate" på vanlig måte i /etc/aliases på cassarossa.

Merk at all mail til itk@ og itk-comment@ delayes fem sekunder for at evt. Bcc'er til itk-take@ og itk-resolve@ skal komme først – dette for at statusinformasjonen nederst på mailene som sendes ut skal være så riktig som mulig. (Denne delayen gjøres også i /etc/aliases.) På samme måte vil mail til itk-resolve delayes to sekunder for at ikke en evt. kopi til take@ skal gjenåpne saken etterpå (litt stygt hack, itk-take@ burde strengt tatt sjekke status først).

itk-take@ og itk-resolve@ sendes (igjen via /etc/aliases) til vårt eget Perl-script kalt "rt-itk" (som ligger sammen med rt-mailgate i /usr/share/request-tracker/bin). Dette bruker RTs egne moduler til å gjøre de nødvendige endringene i databasen, og er "stille", dvs. at den aldri sender ut svar (se TODO :-) ).

Lokale endringer i RT

Pga. en del endringer er RT-pakken satt som "hold" i dpkg på cassarossa – ideellt sett burde man fått sendt lignende endringer eller tilsvarende funksjonalitet til RT upstream. Alle endringer og lokale hacks er tydelig merket som sådan i Perl-koden. Alle filnavn det refereres til her er under /usr/share/request-tracker/lib/RT/.

Endringer for å bevare fungerende tråding

Ticket.pm (rundt linje 1690, og rundt linje 1750): In-Reply-To-headeret kopieres fra innkommende mail på correspond (itk@) og comment (itk-comment@) inn i ticket, dersom headeret finnes.

Attachment.pm (rundt linje 320): In-Reply-To kopieres ut sammen med de andre headerne (det er uvisst om dette virkelig er nødvendig for riktig threading eller ikke, men det ser ikke ut til å brekke noe viktig ;-) ).

Action/SendEmail.pm (rundt linje 230): I stedet for å generere et nytt (ubrukelig) In-Reply-To-header, kopieres det ut fra ticketen hvis det eksisterer.

Andre endringer

Ticket.pm (rundt linje 1770): En sak som er resolved vil ikke gjenåpnes automatisk av en mail fra brukeren som eier saken (se over i beskrivelsen av itk-resolve@ for begrunnelse).

Action/Notify.pm (rundt linje 90): La folk få kopier av også de mailene som de selv har sendt.

Action/SendEmail.pm (rundt linje 470): Flyttet "samfundet #123"-taggen sist for å gjøre subject mer leselig.

/usr/share/request-tracker/bin/rt-mailgate (rundt linje 130): Bruk In-Reply-To-headeret for å finne ticketnummer hvis man ikke fant noe i subject (både ved å prøve å lese ticketnummeret rett ut av headeret, og deretter ved å matche mot tidligere meldinger i ticket'en hvis dette feiler).

MERK: Dette gjelder ikke endringene som skulle til for å integrere ting med ITKACL! Se under og bruk ellers grep etter "sesse/itk", de fleste stedene burde være merket.

Integrasjon mot ITKACL

Ettersom RT er et system vi bruker en del, må man selvfølgelig kunne autentisere mot det med ITKACL :-) RT er imidlertid aldri helt laget for dette, og den eneste egentlig gode måten vi har å integrere ITKACL (dvs. Kerberos-delen) mot web på er via mod_auth_itkacl (se ITKACLBruk), som man kan sette i .htaccess eller i httpd.conf et eller annet sted, men naturlig nok ikke bruke fra Perl. RTs "web external authentication"-system ville vært fint, bortsett fra at vi ønsker å beholde vanlig innlogging (mer brukervennlig login-skjerm, f.eks. ;-) ) inntil videre, så man kan ikke bruke bare det. Derfor skjer følgende når man prøver å aksessere en RT-side

Skjær i sjøen – hva skjer hvis autentiseringen feilet?

I prinsippet burde ikke autentiseringen feile – folk som faktisk har en Kerberos-ticket på Samfundet og prøver å bruke RT burde i utgangspunktet også ha tilgang til RT. Imidlertid er det ikke så lett; IE6 prøver f.eks. villig vekk å autentisere folk uten noen tickets, og det går ikke alltid like bra (se "pitfalls" under Kerberos).

I utgangspunktet burde dette være greit; man har et ErrorDocument 401 som har en Refresh (kan ikke bruke Location, ettersom den bare skal trigges dersom dokumentet faktisk ble vist, dvs. klienten har gitt opp autentiseringen). Imidlertid blir vi her bitt i leggen av en relativt obskur bug i IE6 – dersom den tror den kan autentisere seg med negotiate-autentisering (hvilket den fortsatt tror, selv om den fikk 401) klarer den ikke å sende en eneste liten byte i POST-formen til RT, og får derfor heller ikke logget seg inn på den måten. Derfor sender vi ingen Refresh, men heller en forklarende webside (/nokerberosauth.html) som forklarer hva som må gjøres for å skru av Kerberos i IE6 dersom den ikke fungerer. Hurra for Microsoft... ;-)

TODO – følgende er ting man burde få sett på:

Lenker: Start, gammel dokumentasjon

Mail: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2005-06-11 17:14 | Revisjon: 1 (historie, blame) | Totalt: 1479 kB | Rediger