Back to top

Rummager

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: