Thunderbird + Lightning + Trac

Opäť jeden z mojich technických článkov. Ak vám titulok nič nehovorí, s čistým svedomím môžete tento článok preskočiť 🙂

Vo firme, v ktorej pracujem, používame na organizáciu práce webovú aplikáciu Trac. Ide o relatívne jednoduchý systém umožňujúci správu takých vecí, ako je project Wiki, tickety (bugy, úlohy atd.), celkové smerovanie projektu (roadmap) a ďalšie. Tickety sa dajú organizovať do skupín podľa rôznych kritérií, jedno z ktorých je “My tickets”. Ako hovorí už jej názov, táto skupina obsahuje tie otvorené tickety, ktoré boli priradené mne.

Takéto skupiny ticketov dokáže Trac zobraziť aj ako RSS feed. Takže by teoreticky malo byť možné zobrať odkaz na tento RSS feed a vložiť ho do aplikácie Mozilla Thunderbird, kde by sa dal celý feed pohodlne čítať. Všetko funguje správne, ak je použitá inštancia Trac-u verejná a nepotrebuje prihlásenie. Náš firemný Trac však prihlásenie vyžaduje a je preto problém použiť ho z Thunderbirdu. Po niekoľkých hodinách skúmania a hľadania sa mi však podarilo nájsť riešenie tohto problému.

Najprv ale podrobnosti celého problému. Vezmime si nasledujúcu adresu RSS feedu: https://server/trac-instance/report/7?asc=1&format=rss&USER=username. Keď tento feed chceme vložiť do Thunderbirdu, dostaneme nasledujúcu hlášku: “https://server/trac-instance/report/7?asc=1&format=rss&USER=username is not a valid feed.”

Trvalo mi chvíľu, kým so prišiel na to, čo sa vlastne deje. V skratke ide o to, že keď sa Thunderbird snaží načítať RSS feed, Trac si najprv overí, či Thunderbird poslal prihlasovací cookie. Z pochopiteľných dôvodov neposlal a Trac vráti odpoveď 403 Unauthorized, čo Thunderbird pochopí tak, že feed neexistuje. Problém je v skutočnosti na strane Tracu, ktorý je naprogramovaný tak, že pri pokuse o neautorizovaný prístup jednoducho vráti chybu. Ak by namiesto toho presmeroval na login adresu, Thunderbird by si od užívateľa vypýtal meno a heslo, odoslal by ich a Trac by po úspešnom prihlásení mohol presmerovať späť na RSS feed, ktorý by už Thunderbird našiel.

Takáto podpora presmerovania v Tracu je. Adresa https://server/trac-instance/login podporuje parameter referer, do ktorého je možné vložiť adresu, na ktorú má po úspešnom prihlásení užívateľa presmerovať. Jediný chyták spočíva v tom, že tento parameter musí byť URL enkódovaný. A tak sa ponúka riešenie celého problému. Namiesto https://server/trac-instance/report/7?asc=1&format=rss&USER=username je potrebné do Thunderbirdu vložiť adresu v nasledujúcom tvare:

https://server/trac-instance/login?referer=https%3A%2F%2Fserver%2Ftrac-instance%2Freport%2F7%3Fasc%3D1%26format%3Drss%26USER%3Dusername

Thunderbird potom správne zobrazí výzvu na vloženie mena a hesla, tie odošle na login adresu, dostane prihlasovací cookie a nakoniec ho login adresa presmeruje na adresu RSS feedu, ktorý úspešne načíta.

Ak spolu s Thunderbirdom používate aj add-on Lightning (kalendár), môžete si doň vložiť aj roadmap celého projektu. Trac totiž umožňuje zobraziť roadmap aj vo formáte iCal, ktorý Lightning podporuje. Ale ako adresu kalendára je opäť potrebné použiť vyššie uvedený trik s parametrom referer:

https://server/trac-instance/login?referer={URL encoded iCal URL}

V kalendári sa potom zobrazia projektové milestones a v task liste zase jednotlivé tickety. Všetko na jednom mieste a prehľadne, vrátane priorít a ďalších detailov.

Trac tieto veci nikde nedokumentuje, hore uvedené je výsledkom vyhľadávania a experimetovania s viacerými aplikáciami. Preto som sa rozhodol spísať to na jednom mieste – snáď to niekomu pomôže 🙂

Reklamy

Pridaj komentár

Zadajte svoje údaje, alebo kliknite na ikonu pre prihlásenie:

WordPress.com Logo

Na komentovanie používate váš WordPress.com účet. Odhlásiť sa / Zmeniť )

Twitter picture

Na komentovanie používate váš Twitter účet. Odhlásiť sa / Zmeniť )

Facebook photo

Na komentovanie používate váš Facebook účet. Odhlásiť sa / Zmeniť )

Google+ photo

Na komentovanie používate váš Google+ účet. Odhlásiť sa / Zmeniť )

Connecting to %s