Technologie: python (client/worker), php (serwisy soapowe), mysql.
Projekt Rummager (ang. szperacz) to (docelowo) zbiór krótkich programów pisanych w pythonie realizujących określone, proste zadania w celu zbierania informacji o wybranych usługach sieciowych dostępnych w sieci Internet. Aktualnie projekt skupia się wyłącznie na usłudze SMTP (i to w dość ograniczonym zakresie).
"Zbieranie informacji" polega na sprawdzeniu określonego zakresu adresów IP przez program pełniący rolę Robotnika (Worker) i zapisywaniu wyników takiego "skanowania" w centralnej bazie danych (Serwer), następnie operacja powtarzana jest dla następnego zakresu. Zakresy pobierane są z Serwera i rozdzielane są tak, aby kolejni robotnicy nie dublowali już raz przeskanowanych obszarów (w aktualnej fazie projektu nie została jeszcze zaprojektowana "logika" powtórzeń / sprawdzeń już raz przeskanowanych adresów).
Ogólna architektura projektu została przedstawiona na poniższym schemacie:
- Workers (http://luka.sh/projekty/rummager/worker) - programy wykonujące podstawowe zadania - czyli aktualnie skanowanie (sprawdzanie), w przyszłych wersjach będą to również programy wykonujące funkcje dodatkowe (jak np. sprawdzenie czy dany serwer SMTP - znaleziony wcześniej przez program skanujący - jest serwerem typu "open relay" czy nie)
- Service 1 - serwis SOAP wykorzystywany przez Robotników, pozwala na zarejestrowanie robotnika w systemie, pobranie przez niego "zadania" (aktualnie zakresu adresacji IP do przeskanowania), zapisania wyników, itd...
- Server DB - baza danych zawierająca informacje przesyłane przez robotników.
- ETL - proces wyliczający i przenoszący (kopiujący) wymagane przy generowaniu raportów dane do Hurtowni Danych.
- Warehouse - Hurtownia Danych.
- Service 2 - serwis SOAP udostępniający dane "na zewnątrz"
- Report site - strona generująca raporty na podstawie danych udostępnianych przez serwis "Service 2".
- Archive - baza archiwizująca dane już niepotrzebne w bazie głównej (aktualnie archiwizacja jest wymagana ze względu na hostowanie części serwerowej na jednej z komercyjnych platform i konieczność utrzymania rozmiaru bazy głównej poniżej 5 GB)
Aktualnie dostępne repozytoria i strony związane z projektem:
- Repozytorium zawierające kod części "Workers" (python): https://github.com/lbacik/rummager
- Worker - opis: http://luka.sh/projekty/rummager/worker
- Service - opis: http://luka.sh/projekty/rummager/service
- DB - opis: http://luka.sh/projekty/rummager/service/db
- Nowinki w projekcie (tag "rummager"): http://luka.sh/taxonomy/term/15
- ...reszta w przygotowaniu...