Nowy ejabberd

Niedawno wyszedł Ejabberd
0.7.5. Czekałem na niego, bo miał mieć StartTLS i ulepszony interfejs
administracyjny. Wczoraj zainstalowałem go na jabber.bnet.pl.
Przy okazji wyszły błędy (dotyczące AMD64, którego akurat używam na tym
serwerze) w paczce dla PLD.

I rzeczywiście, na stronie
administracyjnej pojawiła się opcja dodawania userów, a przy połączeniu
możliwość użycia StartTLS. To ostatnie objawiło się w CJC pięknym tracebackiem
i komunikatem błędu, że zły XML przyszedł. Na konsoli XML śmieci. Oczywiście
coś spieprzyłem przy ostatnim oczyszczaniu kodu. Nie miałem StartTLS na
serwerze, to nie zauważyłem.

Dzisiaj w pracy poprawiłem, wspomniane błędy w paczce ejabberd, a także
problemy w budowie erlanga na builderach. W oficjalnym Ac oba pakiety powinny
się niedługo pojawić. Wieczorem poprawiłem też obsługę StartTLS w PyXMPP i CJC
(oba trzeba było poprawić) i już mogę się cieszyć szyfrowanymi połączeniami z
serwerem. I to na normalnym porcie! :-)

Choroba się przenosi na kolejne pokolenie…

Krysia od czasu, do czasu się dorywa do dużego komputera. Słychać
wtedy:
— cieba odpalić dżabela!
— odpalam dżabela!
— jeszcze tylko napisie komentarz!
— zepsułam dżabela!
— piszę komentarz!

Czasem za ciągnie któregoś rodzica do dużego komputera lub laptopa i:
— tu dżabeluj!

Dziecko ma też swój putel — starą klawiaturę leżącą na stole.
Tam też dżabeluje czasem. Ostatnio robiła porządki w zabawkach i na
dnie chomika znalazła myszkę. Chyba nie potrafiła tego nazwać, ale jej
powiedziałem, że to myszka (i nic więcej). Dziecię zaraz to wzięło i
wdrapało się na swoje krzesełko przy stole:
— dzidzia podłączy myśkę tu do putela!

Hip, hip, hurra! XMPP to już Proposed Standard!

IETF Publishes XMPP
RFCs

A więc protokół Jabbera, a dokładniej jego unowocześniona wersja, został
oficjalnie zatwierdzony przez IESG i zyskał miano proponowanego
standardu
. Jest teraz dostępny w postaci dokumentów RFC o numerkach:
3920,
3921,
3922
i 3923. :-)

Ja z tej okazji postaram się dzisiaj uzupełnić dokumentację PyXMPP o odwołania
do odpowiednich fragmentów tych dokumentów.

Wrrr… i akurat teraz Jogger nie działa 😦

Plugin świra

Właśnie napisałem plugin Joggera dla swojego CJC. Oczywiście
jeszcze można wiele w nim zrobić, ale już powinno dać się wysyłać
wiadomości. A nawet nie tylko. Dla każdej wiadomości można wybrać poziom,
a przed wysłaniem jest walidowana wybranym DTD (domyślnie XHTML Strict).
A więc koniec wpisów psujących joggera! :-) Oczywiście edycja
odbywa się w edytorze wybranym przez użytkownika (domyślnie
$EDITOR lub vi, jak to w UNIXach). To będzie
pierwsza wiadomość wysłana z tego plugina na prawdziwego joggera, więc ciekawe
czy i jak dojdzie.

W przedostatnim wpisie pisałem o planowanym przejściu na
ejabberd. W kolejnym krótko napisałem, że się udało. Krótko,
bo było za wcześnie aby mówić o wielkim sukcesie no i dlatego, że nie miałem
plugina w CJC. Z dokładną oceną chciałem trochę poczekać i już chyba nadszedł
odpowiedni czas.

A więc z nowego serwerka jestem bardzo zadowolony. Większość użytkowników
chyba nawet nie zauważyła zmiany. Niektórzy wręcz założyli, że skoro dalej
wszystko działa, to znaczy, że wróciłem do starego. Po prostu działa.
Rozczarował mnie nieco interfejs administratora — zarówno z WWW jak i z
tkabbera. Okazało się, że nie da się przez to zakładać użytkowników. Trzeba z
shella za pomocą ejabberdctl albo pozwolić userom samym się
rejestrować, a tego nie chcę.

A co do tytułu wpisu… Dzisiaj byłem u psychiatry. Dostałem receptę. To już
chyba jestem oficjalnie świrem ;-). Prawdopodobnie ta wizyta to
tylko pieniądze wyrzucone w błoto, ale spróbować zawsze warto.

ejabberd…

O dziwo wszystko (tak mi się wydaje) na tym ejabberd działa. Stanowczo za gładko to poszło… Zobaczymy co będzie jutro, czy jacyś użytkownicy będą się skarzyć.

Jedynie z SSL miałem problemy — najpierw w ogóle nie działało, bo spieprzyłem paczkę z Erlangiem dla PLD (oczywiście już poprawiona), a potem się rozłączało zaraz przy próbie połączenia — potrzebny był patch na Erlanga, do którego namiary były w bug-trackerze ejabberd.

A może ejabberd?

Dość mam już jabberd 1.4.x. Nie po to powstała
specyfikacja XMPP (sam też starałem sie dopilnować, żeby była jak
najlepsza), żeby dalej się trzymać starego protokołu z jego błędami,
ograniczeniami i ficzerami. Próbowałem już jabberd 2.0,
jeszcze w fazie beta jego rozwoju. Była to kompletna porażka. Do
pełnej kompatybilności z XMPP sporo mu brakowało, a stabilność była
stanowczo poniżej oczekiwań. Od tego czasu wyszła wersja stable, ale
nie wygląda na to że wiele się zmieniło. Chociażby patrząc na doświadczenia
smoka z migracją
chrome.pl. A teraz jeszcze ten
produkt został porzucony przez głównego i praktycznie jedynego
autora. Jeśli chodzi tempo rozwoju to teraz
jabberd 1.4.x wypada lepiej i ma nawet szansę
przegonić dwójkę w kompatybilności z XMPP. Mnie się jednak
nie chce czekać.

Trzeba było więc poszukać czegoś innego. WP Jabber
pojawił się z hukiem i w tamtym czasie (no, po poprawieniu tych paru
błędów które wyszyły przy włączeniu S2S) był naprawdę dobrym
rozwiązaniem. Niestety związanym mocno z Linuksem i konkretną
(spatchowaną) wersją kernela. Przez jakiś czas nawet szybko się
rozwijał, ale potem ucichło. Wsparcia XMPP praktycznie brak.

A więc z darmowych serwerów pisanych standardowo
w C (właściwie czemu kierować się użytym językiem?) nie zostało nic.
Pozostał Javowy OpenIM i napisany w Erlangu
ejabber (czytając o nim pierwszy raz spotkałem się
z tym językiem programowania) i pewnie parę innych o których nie
słyszałem bądź nie pamiętam (co oznacza, że pewnie nie są warte
zainteresowania). O OpenIM zresztą też nie słyszałem wiele poza tym,
że jest. Za to ejabberd zawsze kusił. Straszył
jedynie ten Erlang (którego nawet nie było w mojej
dystrybucji) i budowa wszystko w jednym co
potencjalnie mogło utrudniać integrację z czymkolwiek innym.

A czym to ten ejabberd kusi? Ano tym:

  • Obsługa dużej części XMPP (StartTLS jeszcze nie ma w oficjalnym
    wydaniu, ale w CVS już podobno jest), łącznie z privacy
    lists
  • Zarządzanie (rejestracja użytkowników itp.) z linii komend,
    przez WWW i z klienta Jabbera (tkabber ma odpowiedni
    plugin).
  • Możliwość tworzenia rozproszonych serwerów odpornych na awarię
    (to akurat na razie nie jest mi potrzebne).
  • Wbudowane serwisy takie jak katalog użytkowników, czaty grupowe
    (MUC),
    transport IRCa (nie będę używał, bo JJIGW jest napewno lepsze
    ;-)), czy pubsub
    itp.

A więc zdecydowałem — spróbuję tego ejabberd.
Paczki z Erlangiem i samym ejabberd zrobione. Na
localhost w pracy nawet udało mi się to odpalić.
Użytkownikom dałem odpowiedni komunikat. Dzisiaj wieczorem będę
unowocześniał mój serwer!

No to dość tych optymistycznych akcentów. Kolejna notka (jeżeli
w ogóle będę miał ją z czego wysłać) pewnie będzie o tym, czemu
ejabber też jest do d…

Powydawałem trochę…

Powydawałem trochę oprogramowania. Hurtem:
PyXMPP 0.5
CJC 0.5
JJIGW 0.2.
Jeszcze do napisania anonsy na główną stronę JabberStudio, ale
na razie mi się nie chce ich pisać. Pewnie zaraz się okaże, że
w każdym z tych programów jest jakiś krytyczny błąd, z jakim
nie powinno się wydawać. Trudno, kolejny rilis pewnie i tak za
jakieś dwa miesiące lub pół roku, bo wcześniej nie będzie mi
się chciało.

W PyXMPP i CJC główną nowością jest obsługa rozmów grupowych,
w JJIGW poprawa stabilności i obsługa wielu sieci IRC. We
wszystkich poprawiona masa błędów i wprowadzonych nieco nowych.

A w pracy dzisiaj robię za tragarza… :-(

Nie-jellonek

Dostałem prośbę o autoryzację z jakiegoś konta na WP. Pomyślałem: jellonek 🙂.
Okazał się, że jednak nie. Chodziło o moją bramkę do IRC’a
(ircnet.jabber.bnet.pl), która podobno nie
jest dostępna z jabber.wp.pl.
To możliwe, bo ostatnio wywaliłem rekordy SRV
_jabber._tcp dla wszystkich swoich usług
Jabberowych z DNS (zostawiłem _xmpp-server._tcp).
Głupio trzymać dwa rodzaje rekordów do tego samego, gdy stary
jest już obsolete, a można przy okazji zmotywować
administratorów innych serwerów do uaktualnienia konfiguracji
według najnowszych standardów. Nawet nie pomyślałem, że dotknie
to użytkowników serwera WP. Zgłosiłem problem gdzie trzeba (tak
myślę) — zobaczymy co z tego wyniknie.

Wracając do naszego nie-jellonka, czy właściwie
nie-jellonki. Rozmowa się rozwinęła i nawet dostałem
linka do jej stronki. Okazuje się, że to całkiem ładna
dziewczyna (są tam zdjęcia), a z rozmowy wynika, że też całkiem
sympatyczna i inteligentna. Do tego Linuksiara.
Wiedziałem. Wiedziałem, że Open Source to może
być sposób na panienki ;-).

JJ i CIA

Napisali o mojej twórczości w Jabber Journal, ale moja
wrodzona skromność nie pozwala mi się tym chwalić. Więc się nie pochwalę
:-P

Aby moja sława nie zanikła postanowiłem też zadbać o regularne donosy do
CIA. Niestety na JabberStudio nie mam dostępu
do /CVSROOT/ i nie mogę bezpośrednio instalować commit-skryptów.
Mam jednak możliwość skierowania informacji od commita na dowolny JID lub adres
e-mail i z tej właśnie możliwości skorzystałem. Musiałem tylko napisać skrypt
do konwersji wiadomości z JS na XML zrozumiały dla CIA – niecała godzinka
roboty. Od dziś więc notowane będą moje commity nie tylko do
PLD,
ale także do:
PyXMPP,
CJC,
JJIGW
i
Transportu GG.

WP Jellonki

Wiele już było na Joggerze (moim nawet nie) o Jellonkach.
Niektórzy sądzą, że problem dotyczy jedynie GG. Niestety, jest
znacznie gorzej. W GG zaczepiani są właściwie tylko Polacy,
a Jabber ma charakter międzynarodowy. Na razie jellonki atakują
głównie konferencje (rozmowy grupowe).

Jest sobie np. taki pokój
jdev@conference.jabber.org
— jest to miejsce spotkań developerów Jabberowych różnej
maści — autorów klientów, serwerów, usług — oraz
innych Jabberowców. W każdym razie rozmawia się tam głównie
o Jabberze i w języku angielskim. Ale dla przeciętnego (??, mam
nadzieję, że jednak nie) użytkownika WP Kontakt liczy się to, że
jest tam zawsze sporo osób, więc można pogadać. Oto przykłady
takich inteligentnych rozmów z ostatnich paru godzin:

[10:56]<arek19gliwice> dfjklvf vg
[10:56]<arek19gliwice> b
[10:56]<arek19gliwice> 12.13 150
[10:57]<arek19gliwice> 259
[10:57]<arek19gliwice> ]250
[10:57]<RyDeN> arek19gliwice: don't be silly please...
[10:57]<arek19gliwice> co?
[10:57]<RyDeN> stupid...
[10:58]<arek19gliwice> 
[11:00]<tomcio1> witajcie
[11:00]<arek19gliwice> czesc tomcio:)
[11:00]<arek19gliwice> b
[11:01]<arek19gliwice> a
[11:03]<arek19gliwice> y
[11:04]<arek19gliwice> a
[11:07]<arek19gliwice> n
	
[12:46]--- mackel has become available
[12:46]<mackel> cye
[12:47]--- mackel has left
[12:49]--- mackel has become available
[12:49]<mackel> cze
[12:49]<mackel> pogadamz
[12:49]<mackel> pogadamy
[12:49]<mackel> ??????????????????????????????????

Ten ostatni osobnik okazał się bardzo towarzyski i wykazał
działalność typowo jellonkową — zagadał do mnie na
priva:

[12:50]<mackel> cye
[12:50]<mackel> cze
[12:50]<mackel> ile masz lat
[12:50]<mackel> ???????????????????????
[12:50]<jajcus> a co Ciebie to obchodzi?
[12:51]<mackel> tak sie pytam

Problem nie jest nowy. Parę miesięcy temu nawet pisałem w tej
sprawie na abuse@wp.pl. Obiecali coś zrobić,
ale jest jeszcze gorzej niż było. Pewnie skończy się banem dla
*@wp.jabber.pl na wszelkie poważniejsze
konferencje. Na razie normalni użytkownicy pokoju próbują
odsyłać tych idiotów w lepsze miejsce do rozmów:

[11:26:40] <Alejka> Hi:)
[11:26:51] <stpeter> hi
[11:26:54] --- lisica19457 has joined
[11:26:57] --- lordceta has joined
[11:26:57] <stpeter> ?? pl
[11:26:57] <ChatBot> [pl]: See http://www.jabberpl.org/ -- for chat, join wroclaw@conference.jabber.org
[11:27:04] <lordceta> tu?
[11:27:20] <lisica19457> o widze że nasi tu są
[11:27:21] <Alejka> what's going down?:)
[11:27:30] <Alejka> :D
[11:27:37] <lisica19457> nom
[11:27:40] <lordceta> nasi tu byli
[11:27:45] <lisica19457> hehehe
[11:27:50] <stpeter> Alejka: this is a geek room -- Polish chat is in the wroclaw room
[11:27:56] <lisica19457> trzeba narobić zamieszania

Jak widać nieskutecznie. Po dłuższym czasie takiej rozmowy
skończyło się to tak:

[11:32:27] <lisica19457> WYJEBALI MNIE
[11:32:29] <deval> ?? pl
[11:32:29] <ChatBot> [pl]: See http://www.jabberpl.org/ -- for chat, join wroclaw@conference.jabber.org
[11:32:45] <lisica19457> HEHEHEHE
[11:32:52] <lisica19457> ALE FAJNIE NAPISAŁEŚ
[11:32:59] --- lisica19457 has left: [Banned] you have been banned
[11:33:11] <stpeter> lisica19457 has been banned from the room
[11:33:15] <stpeter> anyone else?

Nie widziałem podobnych nadużyć w innych językach. Niedługo wstyd
będzie się tam przyznać, że też jest się z Polski.