Po uruchomieniu program wczytuje swoją konfigurację w bazy danych. Zawiera ona
listę hostów, a każdy host zawiera listę portów TCP, które powinny być monitorowane.
Konfigurator Monitora Serwisów Sieciowych jest aplikacją
webową pozwalającą przygotować taką konfigurację dla Monitora Serwisów Sieciowych.
Zmiana konfiguracji nie wymaga restartu Monitora Serwisów Sieciowych, gdyż
sprawdza on na bieżąco, czy jego konfiguracja nie została zmieniona i wczytuje ją ponownie
jeśli jest to konieczne.
Po załadowaniu konfiguracji program okresowo nawiązuje połączenia z portami TCP
wyspecyfikowanych hostów. Procedura obsługi nawiązanego połączenia zależy od konfiguracji
danego portu. Informacje o każdym połączeniu są zapisywane w bazie danych i są źródłem raportów
jakie przygotowuje Przeglądarka Serwisów Sieciowych. Jeśli
połączenie nie może być nawiązane, to zachowywana jest informacja o błędzie jaki wystąpił.
Informacje, jakie są zapisywane na temat każdego połączenia, prezentuje poniższa tabela:
Tabela 8.2. Informacje zachowywane o każdym wykonanym połączeniu przez program dnsmd
Pole |
Znaczenie |
Czas rozpoczęcia |
Czas rozpoczęcia procedury łączenia ze zdalnym serwisem (portem TCP na zdalnym
komputerze). |
Czas połączenia |
Czas jaki upłynał od rozpoczęcia procedury łączenia do zakończenia funkcji
systemowej connect(). |
Czas całości |
Czas jaki upłynął od rozpoczęcia procedury łączenia do zamknięcia połączenia. |
Kod operacji |
Kod zakończenia operacji: OK jeśli połączenie przebiegło bez problemów lub kod błędu
jaki wystąpił podczas nawiązywania połączenia. |
Kod skryptu akcji |
Kod jaki zwrócił skrypt jeśli dla tego połączenia został uruchomiony. |
8.4.1. Obsługiwane typy protokołów TCP, których obsługa jest wbudowana w program
Program dnsmd posiada wbudowaną obsługę kilku najbardziej znanych protokołów
warstwy aplikacyjnej. Są to:
- SMTP
- HTTP
- FTP
- HTTP i FTP Proxy
Każdy z protokołów jest obsługiwany w specyficzny dla niego sposób scharakteryzowany krótko
w dalszej części dokumentu.
8.4.1.1. Obsługa protokołu SMTP
Obsługa protokołu SMTP polega na wysłaniu serii komend i odbioru
wyniku ich działania. Poniżej jest przedstawiona lista czynności jakie są podejmowane podczas
obsługi serwisu SMTP:
- Odbiór i weryfikacja kodu powitania.
- Wysłanie: HELO david.
- Odbiór i weryfikacja kodu odpowiedzi.
- Wysłanie: QUIT.
- Odbiór i weryfikacja kodu odpowiedzi.
- Oczekiwanie na zamknięcie połączenia przez zdalny komputer.
8.4.1.2. Obsługa protokołu HTTP
Obsługa protokołu HTTP polega na wysłaniu serii komend i otrzymaniu końcowego wyniku ich działania.
- Wysłanie GET http://hostname/url HTTP/1.0.
- Wysłanie Host: hostname
- Opcjonalne wysłanie Authorization: Basic zakodowany_użytkownik_i_hasło (algorytm base64
jest używany do kodowania użytkownika i hasła).
- Oczekiwanie na dowolne dane.
- Oczekiwanie na zamknięcie połączenia przez zdalny komputer.
Ostatnia komenda występuje tylko wtedy, gdy użytkownik i hasło zostały podane w konfiguracji tego portu.
Słowo hostname jest zastępowane rzeczywistą nazwą zdalnego komputera, zaś url ścieżką
jeśli została podana w konfiguracji portu.
Wynik działania tych komend nie jest w żaden sposób weryfikowany. Program dnsmd oczekuje dowolnych
danych i zamknięcia połączenia przez zdalny komputer.
8.4.1.3. Obsługa protokołu FTP
Obsługa protokołu FTP polega na wysłaniu serii komend i odbioru
wyniku ich działania. Poniżej jest przedstawiona lista czynności jakie są podejmowane podczas
obsługi serwisu FTP:
- Odbiór i weryfikacja kodu powitania.
- Wysłanie: QUIT.
- Odbiór i weryfikacja kodu odpowiedzi.
- Oczekiwanie na zamknięcie połączenia przez zdalny komputer.
8.4.1.4. Obsługa protokołu proxy dla HTTP i FTP
Obsługa protokołu proxy dla HTTP i FTP jest bardzo podobna do obsługi protokołu HTTP i polega
na wysłaniu serii komend i otrzymaniu końcowego wyniku ich działania.
- Wysłanie GET url HTTP/1.0.
- Opcjonalne wysłanie Authorization: Basic zakodowany_użytkownik_i_hasło (algorytm base64
jest używany do kodowania użytkownika i hasła).
- Oczekiwanie na dowolne dane.
- Oczekiwanie na zamknięcie połączenia przez zdalny komputer.
Ostatnia komenda występuje tylko wtedy, gdy użytkownik i hasło zostały podane w konfiguracji tego portu.
Słowo url jest zastępowane rzeczywistą lokalizacją zbioru jeśli została podana w konfiguracji portu.
Jeśli url nie został podana w konfiguracji to domyślnym zasobem jest adres http://www.w3.org/.
Wynik działania tych komend nie jest w żaden sposób weryfikowany. Program dnsmd oczekuje dowolnych
danych i zamknięcia połączenia przez zdalny komputer.
8.4.2. Przekazanie zewnętrznemu skryptowi obsługi połączenia
Istnieje możliwość obsługi nawiązanego połączenia przez zewnętrzny skrypt wyspecyfikowany w konfiguracji danego portu.
Wówczas, po nawiązaniu przez program dnsmd połączenia TCP ze zdalnym komputerem, sterowanie jest przekazywane
całkowicie do zewnętrznego programu. Jego standardowe wejście i wyście zostaja przekierowane na nawiązane połączenie.
W ten sposób może on dowolnie sterować wymianą danych. Kod zakończenia pracy zwrócony przez skrypt jest zapisywany w wyniku
danego połączenia.
Skrypt jako swoje parametry wywołania otrzymuje parametry połączenia:
- Nazwa zdalnego komputera.
- IP zdalnego komputera.
- Numer portu TCP na jakie zostało wykonane połączenie.
- URL jaki został skonfigurowany dla tego portu.
- Użytkownik jaki został skonfigurowany dla tego portu.
- Hasło jakie zostało skonfigurowane dla tego portu.
Należy pamiętać, że jeśli praca skryptu trwa dłużej niż parametr timeout dla portu, to praca skryptu
zostanie przerwana po tym czasie.
8.4.3. Błędy podczas nawiązywania połączenia
Nastepujące błędy mogą wystąpić podczas nawiązywania połączenia:
Tabela 8.3. Błędy nawiązywania połączenia przez program dnsmd
Błąd |
Znaczenie |
EADDRESS |
Wystąpił błąd podczas translacji nazwy DNS zdalnego komputera na jego adres IP. |
ECONNECT |
Nie powiodła się funkcja connect(). |
ENETDOWN |
Nie działa sieć w której pracuje zdalny host. |
ENETUNREACH |
Nie jest osiągalna sieć w której pracuje zdalny host. |
ECONNREFUSED |
Nastąpiła odmowa połączenia przez zdalny komputer. |
EHOSTDOWN |
Zdalny host nie pracuje. |
EHOSTUNREACH |
Zdalny host nie jest osiągalny. |
ETIMEOUT |
Czas operacji został przekroczony. |
ESCRIPTFAILED |
Nie udało się uruchomić wyspecyfikowanego skryptu. |
EOTHER |
Wystapił inny (nieznany) błąd. |