Pokazywanie postów oznaczonych etykietą Wave. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Wave. Pokaż wszystkie posty

środa, 3 lutego 2010

Prywatny serwer Wave - instalacja wtyczki Wave

Nasze kilkudniowe walki z własnym serwerem Wave zakończyliśmy na instalacji, konfiguracji oraz przetestowaniu serwera OpenFire. Kolejnym wielkim krokiem na drodze do sukcesu jest zainstalowanie samego rozszerzenia Fali i spięcie go z OpenFire.

Całą operację zaczynamy od ściągnięcia źródeł rozszerzenia za pomocą komendy: hg clone https://wave-protocol.googlecode.com/hg/ wave-protocol. Niespodziewanie w tym miejscu pojawił się pierwszy problem - co to za polecenie hg. Z pomocą przyszła konsola podpowiadając, że najpierw trzeba zdobyć samo narzędzie i można to zrobić wykonując następujące polecenie: sudo apt-get install mercurial. Po zainstalowaniu narzędzia wracamy ponownie do ściągnięcia kodów poleceniem: hg clone https://wave-protocol.googlecode.com/hg/ wave-protocol. Ściągnąwszy pomyślnie źródła przechodzimy do jednego z utworzonych katalogów: cd wave-protocol i wywołujemy budowę wtyczki poleceniem: ant. W tym miejscu ponownie zostajemy rozczarowani, ponieważ nie ma takiego polecenia. Na szczęście Ubuntu ponownie przychodzi nam z pomocą i proponuje ściągnięcie odpowiedniej aplikacji: sudo apt-get install ant. Gdy ją zainstalujemy ponownie próbujemy zbudować wtyczkę poleceniem: ant. Po jakimś czasie powinniśmy zostać poinformowani o sukcesie.
Kolejnym krokiem jest wygenerowanie odpowiednich certyfikatów bez których nie uda się uruchomić wtyczki. Mamy dwie opcje, albo wygenerujemy prosty certyfikat, albo certyfikat sygnowany przez centrum certyfikacji. Oczywiście w obu przypadkach posługujemy się znacznym uproszeniem, ale w momencie, gdy zechcemy oferować publiczny dostęp do serwera ważnym elementem może być uzyskanie prawdziwego certyfikatu poświadczonego przez zewnętrzną instytucję. Dla naszych testowych zastosować wystarczy pierwsza opcja. Poniżej znajduje się skrypt, który pozwoli nam wygenerować prosty certyfikat:

#!/bin/bash                                                                       

NAME=$1

if [ "$NAME" == '' ]
then
  echo "$0 " 1>&2
  exit 1
fi
openssl genrsa 1024 | openssl pkcs8 -topk8 -nocrypt -out $NAME.key
openssl req -new -x509 -nodes -sha1 -days 365 -key $NAME.key -out $NAME.crt
Wykonując ten skrypt zostaniemy poproszeni o podanie kilku danych dotyczących miejsca, firmy, nazwy oraz adresu email. W wyniku działania skryptu powinny zostać utworzone dwa pliki: $nazwa.key i $nazwa.crt, gdzie $nazwa to identyfikator podany podczas wywoływania skryptu. Na poniższym rysunku zaznaczyłem wywołanie generowania certyfikatu oraz utworzone pliki.
Zasada posługiwania się certyfikatem polega na tym, że plik z rozszerzeniem *.crt udostępniamy publicznie osobom, które będą mogły potwierdzić otwartą przez nas komunikację (np. maile) oraz zaszyfrować przeznaczoną tylko do nas komunikację. Plik *.key jest natomiast przeznaczonym tylko dla nas kluczem prywatnym - nie można go nikomu przekazywać.


Będąc w posiadaniu obu plików możemy powrócić do konfiguracji pluginu. Po zbudowaniu aplikacji w katalogu wave-protocol dostępny jest plik: run-config.sh.example - jego zawartość należy skopiować do pliku: run-config.sh. Następnie należy dokonać zmian w nowoskopiowanym pliku.

Na powyższym rysunku zaznaczyłem miejsca w których dokonałem zmiany. W pierwszym przypadku zakomentowałem linijkę (znakiem: #). Druga zmiana polegała na podaniu nazwy lub adresu IP serwera - w naszym wypadku adres IP: 192.168.1.51. Kolejna zmiana dotyczy wprowadzenie sekretnego hasła, które podaliśmy podczas konfiguracji OpenFire. Dwie kolejne zmiany polegają na podaniu ścieżek do plików kolejno z kluczem (zmienna PRIVATE_KEY_FILENAME) i certyfikatem (zmienna CERTIFICATE_FILENAME_LIST) wcześniej wygenerowanymi (*.key i *.cert). Następne dwie zmiany polegają na podaniu adresu IP serwera w dwóch parametrach: CERTIFICATE_DOMAIN_NAME oraz XMPP_SERVER_PING. Ostatnia zmiana polegała na podaniu false w elemencie: WAVESERVER_DISABLE_SIGNER_VERIFICATION. 

Sprawdźmy czy poprawnie skonfigurowaliśmy certyfikaty za pomocą polecenia: ./check-certificates.sh. Jeżeli zobaczymy komunikat jak na poniższym obrazku to oznacza, że wszystko jest ok w tym punkcie.

Pozostaje uruchomić samego Wave'a za pomocą polecenia: ./run-server.sh.
Wraz z referencyjną implementacją protokołu dostarczony jest prosty klient konsolowy. Można go uruchomić za pomocą komendy: /run-client-console.sh . Po wydaniu tego polecenia pojawi się konsolowe okienko podzielone na dwie części. W jednej części prezentowany jest podgląd fal, natomiast w drugiej szczegóły tej jednej wybranej.


W celach testowych na dwóch różnych konsolach zalogowałem się jako dwaj różni użytkownicy i spróbowałem nawiązać komunikację. Efekt widać poniżej.
 
Ponieważ klient jest konsolowy wszystkie akcje należy wydawać za pomocą komend. Poniżej kilka poleceń:
  1. /new - zakłada nową falę
  2. /open - otwiera w prawym oknie podgląd fali o podanym identyfikatorze
  3. /add @ - dodaje użytkownika do aktywnej fali
  4. /remove @ - usuwa użytkownika z aktywnej fali
Więcej poleceń znaleźć można na następującej stronie.


W ten sposób dobrnęliśmy do końca. Udało się nam uruchomić i przetestować działanie naszego serwera Wave'a. Niestety osobiście odczuwam pewien niedosyt, jak się okazało w tej chwili jedynym znanym i darmowym klientem do otwartych fal jest klient konsolowy dostarczany wraz z referencyjną implementacją serwera. Oczywiście w przyszłości pewnie pojawią się nowe aplikacje, które będą wypełniać tę lukę jednak jak patrzę na webowego klienta Googlowskiego Wave to zaczynam wątpić czy kiedykolwiek będą one w stanie dorównać pierwowzorowi.

poniedziałek, 25 stycznia 2010

Prywatny serwer Wave - sprawdzamy działanie XMPP

Jak napisałem w jednym z poprzednich postów dotyczących Wave - rozwiązanie, które zaserwował Google oparte jest o protokół komunikacyjny XMPP. Sam "core" Fali to rozszerzenie tego protokołu.

W poprzednim wpisie opisałem jak skonfigurować serwer XMPP - OpenFire. Z racji, że nie jest to nic innego jak tylko serwer komunikacyjny, spróbujemy połączyć się z nim wykorzystując ogólnie znane aplikacje klienckie. Chciałbym w tym miejscu zwrócić uwagę, że cała konfiguracja, którą wykonaliśmy do tej pory nie dotyczyła Wave samego w sobie, a jedynie wymienionego wyżej serwera komunikacyjnego.

Zanim wybierzemy aplikację kliencką utwórzmy dwa konta użytkowników, które będą odpowiadały za komunikację w obrębie naszego serwera. W tym celu logujemy się na konto administracyjne konsoli serwera. A następnie przechodzimy na zakładkę: Użytkownicy/Grupy i z lewego menu wybieramy opcję: Utwórz nowego użytkownika. Podajemy jego identyfikator oraz hasło i zatwierdzamy dane przyciskiem Utwórz użytkownika.

Poniżej lista z aktualnymi użytkownikami systemu.


Z następującej strony pobieramy klienta Jabbera - PSI. Następnie instalujemy go i przeprowadzamy prostą konfigurację. Zaraz po zainstalowaniu aplikacji napotykamy pierwsze pytanie.

Szczerze mówiąc nie wiem co tu wybrać. Skoro samo konto utworzyliśmy wcześniej z poziomu konsoli administracyjnej to logiczne wydaje się, że trzeba wybrać opcję: Wykorzystaj istniejące konto. Po zatwierdzeniu pojawia się okienko z prośbą o uzupełnienie danych - wpisujemy więc nazwę użytkownika, którego wcześniej utworzyliśmy oraz jego hasło. Ponieważ użytkownicy związani są z serwerami, a sam protokół XMPP umożliwia komunikację pomiędzy serwerami unikalność nazwy użytkownika tworzy para nazwa usera i adres serwera. Dlatego w moim wypadku podałem ciąg: firstuser@192.168.1.51.

Sprawdźmy czy to co wprowadziliśmy wystarczy do połączenia się z serwerem - wybierzmy Zachowaj. Następnie w głównym okienku PSI zmieńmy status na Dostępny. Pojawi się informacja z prośbą o zatwierdzenie testu wiarygodności - wybieramy: Dodaj ten certyfikat do zaufanych.

No i... udało się zalogować.

Uzupełniamy dane o użytkowniku i klikamy Wyślij.

Spróbujmy teraz wykonać taką samą instalację na drugim komputerze - sprawdzimy w ten sposób jak działa komunikacja w obrębie zainstalowanego na maszynie wirtualnej serwera XMPP.

Próba dodania użytkownika firstuser do kontaktów seconduser zakończyła się pojawieniem poniższego komunikatu, który zatwierdzamy wybierając: Dodaj.

Efekt końcowy jest następujący: obaj użytkownicy widzą siebie wzajemnie i obaj mogą ze sobą rozmawiać.

Sprawdziliśmy jak działa nasz serwer i jak widać sprawuje się całkiem dobrze.

Zapraszam wszystkich do kolejnego wpisu z serii Wave. Tym razem zagłębimy się w tajniki instalacji i konfiguracji wtyczki Google'a.

Prywatny serwer Wave - konfiguracja serwera XMPP (OpenFire)

Ostatnim razem udało się utworzyć wirtualną maszynę oraz zainstalować serwer XMPP - OpenFire. Jest to wstęp do "postawienia" własnego serwera Wave. Wszystko ma na celu wykorzystanie tego rozwiązania w biznesie jako ważne narzędzie wspomagające pracę grupową.

Dla przypomnienia, aby dostać się na konsolę administracyjną należy wejść na następującą stronę: http://adres-ip-maszyny-openfire:9090. Pojawi się krótki formularz konfiguracyjny. W pierwszym kroku należy wybrać język - o dziwo aplikacja pozwala wybrać polski.
Kolejny etap dotyczy prostej konfiguracji serwera. Podajemy w tym kroku: nazwę domenową lub adres IP komputera na którym działa XMPP, numer portu konsoli administracyjnej oraz bezpieczny numer portu konsoli administracyjnej. W naszym wypadku w pierwszym polu podajemy adres IP serwera.

W następnym kroku decydujemy z sposobie przechowywania danych. Do wyboru mamy opcję zewnętrznej bazy danych oraz wewnętrznej bazy HSQLDB. Wybieramy tą drugą, ponieważ nie wymaga ona ustawiania i konfigurowania dodatkowej bazy danych. Ten wybór wpłynie jednak na wydajność całego systemu, ponieważ HSQLDB do najwydajniejszych nie należy i w porównaniu z MySQL czy PostgreSQL pozostaje daleko w tyle. Dla naszych rozwiązań jednak wystarczy.

Kolejny krok to podjęcie decyzji o tym gdzie będą przechowywane informacje o użytkownikach oraz grupach. Najlepszym i najprostszym wyjściem będzie wybór domyślnej wartości - czyli przechowywanie tych informacji w bazie danych OpenFire. Do wyboru jest również integracja z usługą katalogową (LDAP) - na pewno skorzystają z niej wszyscy, którzy posiadają takie serwisy.

Ostatnim krokiem jest wprowadzenie danych administratora: adresu email oraz hasła.

Na potwierdzenie udanej konfiguracji pojawia się komunikat zapraszający nas do zalogowania do systemu.

Zanim skorzystamy z tego zaproszenia zrestartujemy demona OpenFire: sudo /etc/init.d/openfire restart. Spróbujmy zatem zalogować się do konsoli administratora (adres: http://adres-ip-maszyny-openfire:9090 lub https://adres-ip-maszyny-openfire:9091). Powinien pojawić się nam widok jak poniżej.

Kolejnym etapem konfiguracji jest zezwolenie zewnętrznym wtyczkom na korzystanie z systemu OpenFire. W tym celu na zakładce: Ustawienia serwera -> Komponenty zewnętrzne należy włączyć usługę, podać port oraz zdefiniować hasło na podstawie którego wtyczki będą rozpoznawane i dopuszczane do działania i potwierdzić wprowadzanie zmian przyciskiem: Zapisz ustawienia.

Po zatwierdzeniu zmian pojawi się sekcja dzięki której można określić jakie komponenty mogą łączyć się z serwerem. W pierwszym kroku zaznaczyć musimy opcję: Biała lista i zapisać ustawienia. Następnie definiujemy jakie komponenty należą do tej listy. W subdomenie należy podać wave i wprowadzić hasło, a następnie zatwierdzić wybór przyciskiem: Dodaj komponent.

Kolejnym krokiem jest wprowadzenie zasad bezpieczeństwa przy podłączaniu się do serwera OpenFire. Przechodzimy na zakładkę: Serwer->Ustawienia serwera->Bezpieczeństwo i w sekcji Bezpieczne połączenia pomiędzy serwerami zaznaczamy opcję Dostosuj. Rozwinie się lista dodatkowych opcji na których sprawdzamy czy w obu przypadkach wybrane jest Dostępny/Opcjonalny. Na końcu zaznaczamy ostatni checkbox - Accept self-signed certificates. Server dialback over TLS is now available i akceptujemy wprowadzone zmiany klikając przycisk Zapisz ustawienia.

Teoretycznie to by było na tyle jeżeli chodzi o konfigurację serwera XMPP (OpenFire). Opcjonalnie można jeszcze wykonać kilka dodatkowych kroków, które pozwolą lepiej dostosować serwer do wymagań użytkowników. W tym momencie jednak ich nie potrzebujemy wprowadzać. 

niedziela, 24 stycznia 2010

Prywatny serwer Wave - instalacja serwera XMPP

Jeden z moich znajomych przesłał mi ostatnio maila z zaproszeniem na imprezkę sponsorowaną przez Google'a, a zatytułowaną - Google Wave. Niezmiernie się uradowałem, ponieważ dużo o tej usłudze słyszałem, ale nie miałem okazji tego sprawdzić z powodu braku zaproszenia.

Po zalogowaniu się do serwisu i utworzeniu kilku wave'ów pomyślałem, że jest to idealne narzędzie do współpracy w projektach, które tworzymy w pracy. Niestety z racji polityki prowadzonej przez pracodawcę nie możemy z tego korzystać, ponieważ krytyczne informacje umieszczone byłyby na serwerach Google'a. Na szczęście internetowy potentat "otworzył" protokół wykorzystywany przez Wave i udostępnił referencyjny serwer, a w zasadzie rozszerzenie do serwerów XMPP. Skoro wszystkie komponenty są otwarte można, spróbować z nich skorzystać i postawić swój władny, prywatny serwer Wave.

Rozpocznijmy od stworzenia nowej maszyny wirtualnej w VirtualBox'ie (lub sklonujmy istniejącą) - w końcu dlaczego mamy zaśmiecać pięknego Windowsa. Dokładny opis co należy wykonać możecie znaleźć zaglądając pod wpisy z etykietą: VirtualBox.

Zanim przejdziemy do instalacji samego Wave'a musimy zainstalować i skonfigurować serwer XMPP kompatybilny ze specyfikacją: XEP-0114. Google poleca jedno z następujących rozwiązań:
  • OpenFire
  • Prosody
  • ejabberd
Ponieważ nie wiem jakie są różnice pomiędzy tymi serwerami zaryzykuję i wybiorę pierwszą opcję - OpenFire. Po zajrzeniu na stronę domową serwera stwierdzam, że przypadł mi on do gustu ponieważ napisany jest w Javie, a wiadomo, że wszystko co Javowe jest dobre ;-).

Instalację należy rozpocząć od ściągnięcia Javy 6 oraz dodatkowej biblioteki: sudo apt-get install sun-java6-jdk sun-java6-fonts. Jeżeli napotkacie na problemy psującej się konsoli podczas akceptacji licencji to zrestartujcie serwer i wpiszcie następujące polecenie: sudo dpkg --configure -a, a później sudo apt-get -f install. Kiedy pojawi się ponownie konsola zatwierdzania licencji to posługujcie się tylko klawiszami Tab oraz Enter. Dzięki temu wszystko powinno zakończyć się powodzeniem. Aby to potwierdzić wystarczy wydać polecenie: javac -version.

Kolejnym krokiem jest zaciągnięcie samego OpenFire. Można to wykonać za pomocą następującej komendy: wget  http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3.6.4_all.deb. Następnie instalujemy pakiet: sudo dpkg -i openfire_3.6.4_all.deb i restartujemy serwis: sudo /etc/init.d/openfire restart. Od tego momentu powinniśmy mieć zainstalowany serwer XMPP (cały czas posługuję się tą nazwą, jednak nie jest to nic innego jak zwykły serwer Jabbera).

Aby sprawdzić czy całą instalacja OpenFire zakończyła się powodzeniem należy spróbować zalogować się z poziomu przeglądarki na adres: http://:9090.

W następnym odcinku postaram się opisać jak skonfigurować serwer XMPP do działania.