0xcafebabe -- per aspera ad astra

Dokument pobrany z: http://www.anadoxin.org/blog/node/63

dirt i psyBNC: a1-dirtpatch4
Tagi:  •    •    •    •  

Czwarty patch do dirta. Adresuje on problem otrzymywania zakodowanych komunikatów w private log'u psyBNC. Z tym patchem dirt będzie rozkodowywał wysyłany przez psyBNC log po wydaniu polecenia /playprivatelog.

Dość przydatna funkcjonalność, ale jest jeden haczyk, choć o nim później. Najpierw szybka demonstracja tego, w jaki sposób można naciąć się na problem (na fullscreen widać więcej; upewnij się też, że uaktywniony jest tryb HD):

Krótki opis akcji w filmie:

00:02 - rozpakowywanie oryginalnych źródeł dirt'a (v1.0.0a25) z oficjalnej strony poleceniem aunpack. Argument -X sugeruje użycie katalogu dirt-noprivmsg.

00:15 - ściągnięcie a1-dirtpatch3.diff z bloga podając bezpośredni adres jako argument programu wget.

00:31 - aplikowanie patcha przy pomocy programu patch.

00:36 - kompilacja spatchowanych źródeł dirt'a. Bez aktywnego programu do nagrywania obrazu trwa nieco szybciej ;).

00:57 - uruchomienie edytora pliku ~/.dirtrc/dirt.ini, aby sprawdzić poprawność konfiguracji. Dirt powinien łączyć się na host i port, gdzie nasłuchuje psyBNC. W filmiku wykorzystałem tryb BNC dirt'a, ale nie powinno być problemu wykorzystanie trybu SOCKS.

01:22 - uruchomienie dirt'a z opcją foreground, tzn. bez przechodzenia w tło. Dzięki temu łatwo można potem z niego wyjść przy pomocy kombinacji klawiszy Ctrl+C.

01:28 - połączenie Pidgina z dirt'em. Konfiguracja konta ustawiona jest na host localhost, port 6666, czyli ten, który widniał wcześniej przy edycji pliku dirt.ini. Pidgin od razu po połączeniu wyświetla okno rozmowy -psyBNC z prośbą o obejrzenie loga, gdzie widać zakodowaną wiadomość.

Następuje teraz część aplikowania patcha z tej notki i jego testu. Zamiast zakodowanej wiadomości Pidgin powinien pokazać poprawnie zdekodowaną informację.

01:52 - Kopiowanie patcha do aktualnych źródeł i aplikowanie go.

02:09 - Rekompilacja dirta i ponowne jego uruchomienie.

... następnie ponowne połączenie się Pidginem i sprawdzenie loga privatelog.

Z problemem rozkodowywania wiadomości z privateloga wiąże się haczyk, o którym wspominałem wcześniej. Wyobraźmy sobie pewną hipotetyczną sytuację. Mamy sesję na IRC pod nikiem zombie. Awaynick ustawiony jest na zombie`off. Przy każdorazowej rozmowie, gdy jesteśmy zalogowani na sesję, wszystkie wymiany kluczy fish'a dokonujemy z nicka zombie. Gdy jednak wychodzimy z sesji, nasza sesja przyjmuje nick zombie`off, co spowoduje sytuację, gdzie osoba, która do nas pisze, posługuje się kluczem dla adresata zombie`off, a nie zombie. Jeśli nigdy nie wymienialiśmy klucza spod awaynicka, wtedy do private loga trafią wiadomości niezakodowane, co pociągnie niespatchowany dirt. Jeśli jednak wymienialiśmy klucz z awaynicka, do privateloga trafią wiadomości zakodowane fishem, co spowoduje efekt widoczny na filmiku powyżej.

Jest też jeszcze jedna możliwość: gdy nasz awaynick jest taki sam, jak primary nick — w takim przypadku do privateloga zawsze będą trafiały wiadomości zakodowane (dlatego zawsze potrzebny jest ten patch).

Instalacja jest identyczna, jak instalacja poprzednich wersji. Wystawiam dwa pliki:

- pierwszy patch, będący połączonym patchem wszystkich poprzednich oraz patcha z tego posta; wybierz ten, jeśli chcesz aplikować go na czyste źródło (v1.0.0a25 — dostępne na oficjalnej stronie dirta),

- drugi patch, będący samym czwartym patchem. Wybierz ten, jeśli chcesz aplikować go na spatchowane (a1-dirtpatch3.diff) źródło. Ten plik jest wykorzystywany w filmiku powyżej ( 01:52).

Dodam tylko jeszcze raz, że oba pliki powyżej mają za zadanie przekonwertować źródło do tego samego stanu.