X Używamy plików cookie i zbieramy dane m.in. w celach statystycznych i personalizacji reklam. Jeśli nie wyrażasz na to zgody, więcej informacji i instrukcje znajdziesz » tutaj «.

Numer: 25207
Przesłano:

Środowisko do wsadowego przetwarzania danych w technologii. Praca Magisterska

POLITECHNIKA POZNAŃSKA

Wydział Informatyki i Zarządzania

Praca Magisterska

Tytuł pracy:
„Środowisko do wsadowego przetwarzania danych”

Imię i nazwisko: Monika Świątek
Studia: zaoczne
Numer albumu: 73441 Promotor: dr inż. Piotr Zielniewicz

Poznań 2008

Spis Treści
SPIS TREŚCI 1
1.WSTĘP 3
2.CEL I ZAKRES PRACY 5
3.ARCHITEKTURA I OPIS SYSTEMU 7
3.1. WPROWADZENIE DO PRZETWARZANIA WSADOWEGO 8
3.1.1. Tryby pracy przetwarzania wsadowego: 10
3.1.2. Budowa pliku wsadowego 10
3.1.4. Serwer 11
3.1.5. Klient 11
3.2. PRZEGLĄD PROTOKOŁÓW POCZTOWYCH 13
3.2.1. Protokół POP3 13
3.2.2. Protokół SMTP 16
3.2.3. Protokół IMAP 18
3.2.4. Metody autoryzacji i zabezpieczenia systemów poczty elektronicznej 19
4. IMPLEMENTACJA SYSTEMU 22
4.1. NARZĘDZIA I TECHNOLOGIE 22
4.2. OPIS PROGRAMU 24
4.3. OPIS IMPLEMENTACJI 25
5.PRZYKŁADY ZASTOSOWANIA I WYMAGANIA DOTYCZĄCE INSTALACJI 31
5.1.WYMOGI DOTYCZĄCE INSTALACJI 31
5.2.SCENARIUSZE 40
6. PODSUMOWANIE 51
7. LITERATURA 53
7.1 SPIS ILUSTRACJI 54
7.1 INDEKS TABEL 54

1.Wstęp

Szybki rozwój systemów komputerowych spowodował narastające w ostatnich latach zapotrzebowanie na uaktualnienie oprogramowania oraz wymianę sprzętu komputerowego. W wyniku dużego tempa rozwoju informatyzacji niemal we wszystkich przedsiębiorstwach istnieje realna potrzeba zaopatrywania się w coraz nowsze i szybsze komputery, oraz dodatkowe urządzenia zewnętrzne. Szybkie „starzenie się” nabytego sprzętu i oprogramowania, oraz konieczność inwestycji w coraz lepsze i bardziej nowoczesne technologie nie zawsze jest możliwa ze względów finansowych i ekonomicznych. Zgodnie z prawem Moore’a moc obliczeniowa komputerów podwaja się co osiemnaście miesięcy, a dzięki miniaturyzacji układów i podzespołów możliwe jest zwiększanie wydajności komputerów. Wdrażanie nowoczesnych rozwiązań informatycznych i technologii w firmach stanowi duże wydatki dla przedsiębiorstw, co sprawia, że firma nie zawsze może pozwolić sobie na zakup licencji na wszystkie stacje robocze, pomimo, iż wielu użytkowników chciałoby skorzystać z dostępnego oprogramowania.
Rozwiązaniem może być idea zlecania zadań na komputer o większej mocy obliczeniowej, która pozwala w pewien sposób zaoszczędzić wydatki na wymianę lub zakup nowych programów i komputerów. Przypomina ona znaną od lat pięćdziesiątych koncepcje wsadowego przetwarzania danych. Część zadań może zostać wykonana na innym komputerze, na którym zainstalowany jest program umożliwiający dostęp do lokalnych zasobów i aplikacji. Wyniki działania są odsyłane do użytkowników za pomocą poczty elektronicznej. Zaproponowane rozwiązanie jest podobne jak przy działaniu drukarek sieciowych, skanerów i innych urządzeń.
Celem powstania środowiska do przetwarzania danych było stworzenie usługi dla systemu Windows, która rozwiązywałaby problem zakupu dodatkowego oprogramowania lub szybszego sprzętu komputerowego. Dzięki wykorzystaniu protokołów pocztowych istnieje możliwość zlecania zadań do wykonania na komputer, który ma zainstalowane odpowiednie programy, oraz jest wyposażony w odpowiednie podzespoły.
Używanie programów na komputerach wiąże się z posiadaniem licencji na użytkowanie. Są różne typy licencji, które określają zasady korzystania z oprogramowania komputerowego. Mogą to być: licencje jednostanowiskowe, grupowe, shareware, lub na przykład GNU. Zastosowanie usługi pozwala na korzystanie z danego programu innym użytkownikom sieci, bez naruszania zasad licencji. Z punktu widzenia licencji nie łamiemy w ten sposób prawa, gdyż odpowiedni program zainstalowany jest tylko na jednej maszynie, która ma na niego licencję. Pozostali użytkownicy systemu, nie korzystają bezpośrednio z oprogramowania, a jedynie zlecają zadania ze stacji klienckich za pomocą poczty email i otrzymują tylko wyniki działania, również za pomocą poczty elektronicznej.
Zalety i funkcjonalność usługi środowiska do wsadowego przetwarzania danych ułatwia nam korzystanie z oprogramowania na które mamy często jedyną licencję w firmie, a także pozwala zaoszczędzić wydatki na kosztowny sprzęt komputerowy, komponenty i nowoczesne technologie. Niekiedy programy komputerowe wymagają dużej ilości miejsca na dysku twardym, odpowiedniej mocy procesora, lub pamięci RAM. Dzięki takiemu rozwiązaniu wystarczy nam jeden nowoczesny komputer, który posiada odpowiednie oprogramowanie i podzespoły wymagane jako minimum przy instalacji niektórych programów.

2.Cel i zakres pracy
Celem pracy jest zaprojektowanie i zaimplementowanie środowiska do wsadowego przetwarzania danych, obejmującego lokalny serwer zasobów i aplikacji. Zaprezentowane środowisko ma być usługą dla systemu MS Windows. Całość aplikacji znajduje się po stronie serwera na dysku lokalnym, do której mają dostęp jedynie uprawnieni użytkownicy za pomocą wykorzystania kont pocztowych.
Zadaniem „serwera” jest pobranie informacji i danych od użytkownika za pomocą poczty elektronicznej. Potem odbywa się przeanalizowanie jej treści, tematu i załączników (np. załączonego pliku i zawartego w temacie wiadomości polecenia systemowego). Kolejnym etapem jest uruchomienie odpowiedniego programu realizującego wybrane zadanie wcześniej zdefiniowane w systemie. Warunkiem jest zainstalowanie odpowiedniego programu, który będzie realizował wybraną usługę, oraz odpowiednia konfiguracja systemu. Wynik przetworzonego zlecenia za pomocą dostępnych programów na dysku lokalnym jest odsyłany do „klienta” za pomocą poczty elektronicznej. Użytkownik pobiera dane i dokumenty za pomocą swojego konta poczty email. Interakcje z serwerem jest realizowana za pomocą dowolnego klienta pocztowego.
Komunikacja odbywa się za pomocą protokołów pocztowych z wykorzystaniem SMTP i POP3, oraz dowolnego programu do obsługi poczty. Uprawnienia w systemie nadawane są za pomocą autoryzacji użytkowników poprzez ich adresy emailowe, które znajdują się w bazie użytkowników. Możemy na przykład dodać użytkownika, który będzie miał jedynie dostęp do przetworzenia plików tekstowych z Word na PDF, lub odwrotnie, a nie będzie miał uprawnień do zamiany plików graficznych. Modyfikacja, dodawanie i odejmowanie adresów użytkowników, oraz nadawania uprawnień możliwe jest jedynie za pomocą konta administratora, natomiast pozostali użytkownicy systemu mają jedynie ograniczony dostęp do aplikacji, czyli do wykorzystania tylko jej podstawowych funkcji. Administracja służy także do zarządzania bazą użytkowników, oraz nadanymi uprawnieniami.
Istotną zaletą funkcjonalności systemu jest łatwe zarządzanie dostępnymi usługami, oraz ich modyfikacja. Zmiany konfiguracji oprogramowania, oraz dostępnych usług dokonywane są bezpośrednio na stacji, na której zainstalowane jest oprogramowanie serwera. Dodawanie i odejmowanie użytkowników, oraz nadawanie im uprawnień odbywa się za pomocą poczty email przez administratora systemu, ale może być także wykonywane bezpośrednio, poprzez konfigurację w menu programu.

Rozdział 3 Zawiera opis systemu oraz architektury
Rozdział 4 Zajmuje się implementacją systemu
Rozdział 5 Opisuje wymagania dotyczące instalacji oraz przykłady zastosowania
W rozdziale 6 Znajduje się podsumowanie

3.Architektura i opis systemu

System został stworzony w oparciu o usługi jakie dają nam protokoły pocztowe. Kluczową rolę w systemie pełni program, który za pomocą zdefiniowanych wcześniej poleceń, uruchamia zewnętrzne programy i aplikacje zainstalowane lokalnie. Oprogramowanie to pozwala na pobranie zadań do wykonania od użytkowników za pomocą poczty elektronicznej, analizę treści, polecenia i załączników wiadomości elektronicznej. Po rozpoznaniu polecenia w systemie wykonuje się zadanie za pomocą polecenia wsadowego zawartego w konfiguracji usługi i przesłanie wyniku pracy jako załącznika do użytkownika za pomocą wiadomości elektronicznej. Użytkownicy nie mają fizycznego dostępu do oprogramowania zainstalowanego na komputerze serwerze, a jedynie mogą przesyłać zadania do wykonania za pomocą usług pocztowych z wykorzystaniem dowolnego klienta pocztowego.
Serwery to komputery udostępniające swoje usługi, oprogramowanie, lub urządzenia zewnętrzne dla pozostałych użytkowników połączonych w sieć. Na tej zasadzie działa zaprojektowana aplikacja do wsadowego przetwarzania danych. Ma to duże znaczenie w zastosowaniu licencji do oprogramowania. Licencja (ang. licence) w odniesieniu do oprogramowania jest regulacją prawną, która stanowi warunki użytkowania oprogramowania, oraz sposoby odpłatności. Zasady korzystania z oprogramowania określa właściciel praw autorskich, którym jest zazwyczaj producent. Możemy wyróżnić kilka rodzajów licencji, są to między innymi: licencje jednostanowiskowe, grupowe, firmware, shareware, freeware, GPL, Public Domain, oraz licencja GNU jak na przykład dystrybucja niektórych systemów Linux [1]. Licencja shareware to zazwyczaj bezpłatna wersja oprogramowania wydawana na określony czas użytkowania, na przykład miesiąc lub dłużej dla użytkowników indywidualnych, czyli niekomercyjnych. Licencja typu freeware to licencja darmowa, rozprowadzana po kosztach nośników oprogramowania, na przykład dyskach CD-ROM. Takie oprogramowanie może być, ale nie musi objęte prawami autorskimi. Licencje grupowe to licencje wielostanowiskowe. Dostarczane są one w formie certyfikatu i nośnika instalacyjnego. Certyfikat taki zawiera dane dotyczące firmy oraz listę i na przykład ilość zakupionych licencji. Licencje grupowe pozwalają na przenoszenie oprogramowania z jednego komputera na drugi, ich dużą zaletą w firmie jest łatwość zarządzania. Zakupując licencje grupowe, mamy też możliwość skorzystania z różnych rabatów cenowych. Często są one wykorzystywane w jednostkach edukacyjnych i instytucjach rządowych. Licencje mogą być wieczyste lub terminowe. Jednostanowiskowe to takie, których nie wolno przenosić na inny komputer. Przykładem może być licencja typu OEM.
Architektura systemu została stworzona w oparciu o system poczty elektronicznej. Celem zaprojektowanego rozwiązania było umożliwienie korzystania użytkownikom systemu z dostępnego oprogramowania bez naruszania zasad licencji oprogramowania. Użytkownik za pomocą dowolnego programu pocztowego może wysłać polecenie za pośrednictwem usług pocztowych. W drodze do serwera wykorzystywana jest usługa SMTP dla wysyłanych wiadomości elektronicznych. Konto sprawdzane jest co jakiś czas, czy nie nadeszły nowe wiadomości od kolejnych użytkowników. Częstotliwość sprawdzania wiadomości zależy od ustawień w panelu administracyjnym i konfiguracji serwera pocztowego. Kiedy wiadomość trafia na konto serwera, pobierana jest za pomocą protokołu POP3 przez serwer konwersji plików. Na tym etapie następuje przetwarzanie zlecenia przez serwer, analiza wiadomości pocztowej, tematu i ewentualnie załącznika. Jeśli usługa jest skonfigurowana w systemie, to poprzez zdefiniowane polecenie następuje uruchomienie odpowiedniego programu zainstalowanego na komputerze i przekonwertowanie dokumentu. Kolejnym etapem jest odesłanie wiadomości do użytkownika z wynikiem przetwarzania w załączniku za pomocą protokołu SMTP. Klient odbiera wiadomość elektroniczną za pomocą dowolnego programu pocztowego oraz protokołu POP3. Jeśli usługa nie będzie wcześniej zdefiniowana w systemie, do użytkownika zostanie wysłana wiadomość, która będzie zawierała wszystkie zdefiniowane usługi w systemie. A gdy użytkownik nie będzie miał prawa do skorzystania z wybranej opcji, otrzyma odpowiednią wiadomość systemową.

3.1. Wprowadzenie do przetwarzania wsadowego

Termin program wsadowy oznacza: plik ASCII (tekst niesformatowany), który zawiera jedno lub kilka poleceń systemu operacyjnego. Kiedy nazwa pliku zostaje wpisana w wierszu polecenia lub kiedy program wsadowy zostaje uruchomiony z komputera, polecenia programu wsadowego są przetwarzane sekwencyjnie. Programy wsadowe są również określane jako pliki wsadowe.
Termin wsad (ang. batch) pojawił się w czasach kiedy do wprowadzenia kodu programu do komputerów używano kart perforowanych[9]. Karty z kodem programu były przekazywane do operatora systemu, który rezerwował czas dla jego wykonania, i wprowadzał go w stosownym momencie. Ponieważ kilka programów było zwykle wprowadzanych na raz, określono je nazwą wsad, a w ten sposób uruchamiane programy nazwano zadaniami wsadowymi. Zadania wsadowe organizowane są w taki sposób, aby były one realizowane bez ingerencji użytkownika. Dane wejściowe przekazywane są jako parametry wiersza poleceń.
Program wsadowy jest sekwencją poleceń systemu operacyjnego, które umieszczone są w zbiorze tekstowym. Zbiór pleceń tekstowych przeznaczony jest do wielokrotnego wykorzystania. Ideą programowania wsadowego jest zbiór poleceń zawierających niezbędne instrukcje sterujące[8]. Mogą mieć one rozszerzenie BAT, ale także mogą być zawarte w postaci plików wykonywalnych COM, lub EXE, używanych w Windows. Uruchomienie tych programów za pomocą wiersza poleceń wykonuje się podobnie jak obsługę i uruchamianie poleceń systemowych. Programy wsadowe mogą przechowywać zmienne za pomocą których przekazywane są instrukcje. Zaletą jest prostota ich działania, oraz szybkość. Programy te umożliwiają dostęp do aplikacji dla kilku użytkowników jednocześnie, a także nie powodują obciążenia pamięci procesora, mogą działać w tle[9]. Programy wsadowe pozwalają także na szybką zmianę opcji systemu operacyjnego. Termin skrypt oznacza typ programu składający się z listy rozkazów aplikacji lub programu. Skrypt najczęściej wyraża polecenia przy użyciu reguł i składni aplikacji lub narzędzia oraz prostych struktur sterujących, takich jak pętle i wyrażenia warunkowe typu if/then.
W trybie wsadowym uruchamiane są przeważnie serie zadań wykonywanych przez komputer. Dane wyjściowe jednego programu służą jako dane wejściowe dla drugiego programu, i są one zazwyczaj ze sobą powiązane. Zadania wsadowe są zazwyczaj organizowane tak, aby ich realizacja przebiegała bez udziału użytkownika. Danymi wejściowymi są parametry wiersza poleceń powiązane z innymi zadaniami i przekazywane mechanizmem potokowym[8].
Zaletami przetwarzania wsadowego mogą być: podział zasobów komputera między wielu użytkowników, wykonywanie poleceń w momencie, gdy system jest mało obciążony zadaniami, czy innymi aplikacjami, powodują minimalizację bezczynności systemu bez udziału człowieka, oraz efektywne wykorzystanie często drogiego systemu operacyjnego.
Przetwarzanie wsadowe wykorzystywane jest w systemach UNIX, choć jego początki możemy też odnaleźć w systemie DOS. Wcześniejsze przetwarzanie wsadowe mogliśmy spotkać na komputerach klasy mainframe, które ze względów ekonomicznych realizowały większość operacji w trybie wsadowym. Niewątpliwie do zalet przetwarzania wsadowego możemy zaliczyć automatyzację rutynowych, lub wielokrotnie przetwarzanych tych samych zadań w systemie operacyjnym[9]. Pliki wsadowe zapewniają także łatwy sposób wykonywania tych samych operacji kolejno na wielu plikach. Wykorzystywane są także do importu danych z wielu plików opisowych, oraz sprawdzania składni w wielu dokumentów.

3.1.1. Tryby pracy przetwarzania wsadowego:

I. Tryb bezpośredni

- maszyna wykonuje jeden program
- na czas operacji I/O następuje zatrzymanie programu do chwili sprowadzenia lub wysłania danych
- mała efektywność systemu
- małe wykorzystanie czasu procesora

II. Tryb pośredni:
- komputer nieograniczony przez prędkość czytania i wysyłania danych
- zwiększenie liczby zadań obsługiwanych przez jednostkę centralną
- możliwość pomnożenia zasobów odczytujących i wysyłających dane
3.1.2. Budowa pliku wsadowego

Plik wsadowy jest zwykłym plikiem tekstowym zawierającym polecenie. Wewnątrz tego pliku znajdują się instrukcje, które umożliwiają wykonywanie różnych czynności i są one poleceniami dla systemu operacyjnego. Każde polecenie musi być umieszczone w osobnej linii, polecenia te mogą być wewnętrzne, zewnętrzne(programy), lub polecenia dla jednego konkretnego pliku, specyficzne, które są dozwolone tylko w tym pliku.
Pliki wsadowe uruchamia się jak zwykłe pliki wykonywalne[9]. Mogą one zawierać nie tylko polecenia, ale także zmienne, można na nich wykonywać kolejne polecenie jedne po drugich.

3.1.3. Model klient-serwer
Model klient-serwer jest typem aplikacji rozproszonej. Pozwala on na synchronizację działań w systemie przy wykorzystaniu różnych standardów w zestawieniu połączenia różnych użytkowników, różnych systemów komputerowych. Jego zadaniem jest rozwiązanie problemów połączeniowych różnych programów pracujących w tym samym protokole warstwy zastosowań. Ponieważ programy te są różne, chodzi o to, aby doszło do ich synchronizacji w momencie nawiązania połączenia i próbie nawiązania komunikacji. Dzięki takiej architekturze problem nawiązania komunikacji w tym samym czasie i z różnego miejsca systemu został rozwiązany, pomimo, iż różne programy nie mają charakteru symetrycznego[2].
3.1.4. Serwer

Serwer jest częścią aplikacji rozproszonej, która oferuje pewne usługi dla klienta i czeka na jego zgłoszenie. Działanie aplikacji serwera na komputerze jest przeważnie działaniem ciągłym, to znaczy, że działa cały czas, jego adres (nazwa) jest powszechnie znany, a dla konkretnej usługi jest przypisany konkretny numer portu. Serwer jest częścią aplikacji działającej cały czas i oczekującej na zgłoszenie od klientów pod konkretnym numerem portu i dlatego odpada tutaj problem z tym, kiedy serwer zacznie działać i gdzie. Jedynym wymaganiem jest tutaj znajomość nazwy serwera dla klientów korzystających z jego usług. Serwery zazwyczaj pracują na komputerach mocniejszych w systemie, i także na takim komputerze może być uruchomionych kilka serwerów dla różnych usług. Takie komputery w systemie nazywane są serwerami, w odróżnieniu od aplikacji rozproszonej, w której serwerem jest część aplikacji rozproszonej wykonująca określone usługi i nasłuchująca określonych portów, a także czekająca na zlecenia jako strona pasywna (bierna) w nawiązaniu połączenia[3].
3.1.5. Klient

Klientem w aplikacji rozproszonej jest to część aplikacji, która zgłasza do serwera żądanie i jest odpowiedzialna za nawiązanie z nim połączenia. Aplikacja taka oczekuje od serwera pewnych usług, może zlecać zadania do wykonania. Aplikacja kliencka jest zazwyczaj prostszym od serwera programem użytkowym, i nie działa ona cały czas w systemie, a jedynie na czas połączenia z serwerem i korzystaniem z jego usług[2]. Klient jest aktywna stroną działania aplikacji rozproszonej i inicjuje operacje zestawienia połączenia.
Do wykonywania połączenia między programem klienckim a serwerem stosujemy tak zwane interfejsy gniazd, których rozróżniamy dwa zasadnicze typy. Dla protokołu połączeniowego TCP wykorzystywane są gniazdka połączeniowe i nasłuchujące. Gniazdka połączeniowe używane są przez obie części systemu, natomiast nasłuchujące wykorzystywane są przez programy serwera. W Internecie zazwyczaj jest stosowany typ modelu klient-serwer, gdyż pomaga to na swobodne nawiązanie programu klienckiego z serwerem. Możliwe jest zastosowanie także gniazd datagramowych, w trybie bezpołączeniowym, jednak powoduje to problem z połączeniem jednego programu z drugim, ale nie wymaga zastosowania wyżej wymienionego modelu[3].
Serwery są programami dość skomplikowanymi. Najczęściej ich podział dotyczy sposobu obsługi klientów. Możemy je podzielić na iteracyjne lub współbieżne. Iteracyjne są to serwery obsługujące klienty jednego po drugim, natomiast współbieżne mogą obsługiwać wszystkich klientów na raz za pomocą nowych wątków, lub prowadzeniu kilku połączeń [2].
Sposoby wykorzystania usług transportowych w architekturze TCP zależą od protokołu warstwy zastosowań. W protokole TCP można przesłać wszystko, co może przyjąć postać strumienia danych, jak na przykład plik, sekwencje rekordów danych, lub sformatowane dane. Sposoby wymiany komunikatów mogą być synchroniczne i asynchroniczne.
Synchroniczne to takie, w których komunikaty pojawiają się w określonych okolicznościach. Obie strony dokładnie wiedzą kiedy komunikat może zostać wysłany, a kiedy muszą poczekać na komunikat od partnera. W takim wypadku dialog oparty jest na równomiernej wymianie komunikatów, pytanie-odpowiedź. Dialog synchroniczny jest zazwyczaj stosowany w usługach i protokołach automatycznych i bez udziału użytkownika na przykład w protokołach POP3 i SMTP.
Asynchroniczne to takie w których komunikaty pojawiają się w dowolnym momencie, a żadna ze stron nie wie, kiedy pojawi się komunikat od partnera. Ma natomiast możliwość wysyłania komunikatów w dowolnym momencie. Takie zastosowanie wykorzystywane jest w usługach działających w czasie rzeczywistym i usługach wykonywanych przez użytkownika na przykład klient IRC.
W architekturze protokołu TCP wszystkie pytania i odpowiedzi są wyodrębnionymi porcjami danych, sformatowanych w sposób charakterystyczny dla danej usługi. W tym przypadku komunikaty przesyłane są za pomocą strumienia, czyli sekwencji bitów i nie posiadają żadnej struktury. Zazwyczaj dane przesyłane są w postaci pakietów, ale istnieje możliwość, że zostanie podzielony na kilka kawałków[3]. W standardowych protokołach wykorzystujemy komunikaty w formie tekstowej.
3.2. Przegląd protokołów pocztowych

3.2.1. Protokół POP3

POP3 (ang. Post Office Protocol) jest protokołem pocztowym służącym do odbioru poczty elektronicznej. Został on opisany w dokumencie RFC 1725[12]. Jego zadaniem jest pobranie wiadomości email z serwera pocztowego, znajdującego się na komputerze podłączonym cały czas do Internetu. Standardowo przydzielony port dla tego protokołu to port 110. Protokół wykorzystuje połączenie strumieniowe TCP. Serwery POP3 mogą mieć także wbudowane zegary, które powodują zamykanie połączenia po jakimś czasie nieaktywności klienta, co zabezpiecza przed niepowołanym dostępem do serwera. Użytkownik korzystający z Internetu może na chwilę połączyć się ze zdalnym komputerem i odebrać lub wysłać wiadomości pocztowe. Pobranie wiadomości może odbywać się za pomocą usług http, oraz programu pocztowego skonfigurowanego do usług pocztowych. Ideą korzystania z programów pocztowych jest wysłanie zapytania do serwera, czy nie ma na nim nowych wiadomości i ewentualnie skopiowanie ich i pobranie na dysk komputera, możliwe jest pozostawienie wiadomości pocztowych na serwerze lub skasowanie ich po pobraniu programem pocztowym. Zależy to od ustawień i możliwości programu do odbioru poczty, preferencji użytkownika. Dzięki programom pocztowym mamy nie tylko możliwość pobrania wiadomości na dysk lokalny, ale możemy wcześniej sprawdzić jakie wiadomości znajdują się na serwerze, nie odbierać niechcianych wiadomości jak na przykład tak zwanego spamu, lub wcześniejsze skasowanie ich na serwerze. W poniższej tabeli przedstawiono wszystkie polecenia standardu POP3.
Tabela 1. Spis poleceń standardu POP3
Kod polecenia oraz argument Wartość argumentu/ wykorzystanie
STAT <CRLF> Statystyka skrzynki – ile jest wiadomości i ile zajmują
LIST <SP>[numer_listu]<CRLF> Wylistuje zawartość skrzynki, w formie:
numer_listu jego wielkość.
RETR<SP>numer_listu<CRLF> Odebranie wskazanej wiadomości
DELE<SP>numer_listu<CRLF> Zaznaczy do skasowania list o podanym numerze
RSET<CRLF> Wyzerowanie operacji sesji
NOOP<CRLF> Polecenie kontrolne
QUIT <CRLF> Zamknięcie sesji – aktualizacja skrzynki
TOP<SP>numer_listu<SP>ilość_linii<CRL> Wyświetli podaną ilość linii wiadomości
UIDL<SP>[numer_listu]<CRLF> Wylistuje zawartość skrzynki podając numer właściwy i numer identyfikacyjny wiadomości
USER <SP>nazwa_użytkownika<CRLF> Weryfikacja nazwy użytkownika
PASS <SP>hasło_użytkownika<CRLF> Weryfikacja hasła użytkownika
APOP<SP> nazwa_użytkownika<SP>MD5_kod<CRLF> Weryfikacja użytkownika przy użyci algorytmu kodowania MD5.

Dialog między klientem a protokołem pocztowym oparty jest na wymianie komunikatów tekstowych[2]. Komunikat zawiera ciągi znaków zapisanych w kodach ASCII, oraz separatorami z podziałem na linie. Współpracują one na zasadach polecenie-odpowiedź.
Przykładem polecenia może być słowo ”USER” i podanie nazwy użytkownika skrzynki pocztowej, w odpowiedzi od klienta otrzymamy słowo „+OK” jeśli taki użytkownik posiada skrzynkę na serwerze lub „-ERR”, gdy takiego użytkownika nie ma. Odpowiedzi zaczynające się znakiem „+” są wykonane bezbłędnie, natomiast znakiem „-„ to odpowiedzi błędne, jak na przykład odpowiedź serwera po podaniu nieprawidłowej nazwy użytkownika lub hasła. Połączenie klienta z serwerem przebiega na zasadzie wymiany komunikatów[2],
za pomocą dialogów. Po każdym wysłaniu polecenia klient musi poczekać na odpowiedź aby nadać drugi komunikat. Dialogi możemy wyróżnić dla trzech podstawowych stanów, są to stany autoryzacji, transakcji i uaktualniania. Stan autoryzacji jest potrzebny do uwierzytelnienia klienta za pomocą podania hasła i nazwy użytkownika. Stan transakcji to stan w którym można przeprowadzać określone operacje w skrzynce pocztowej, jak na przykład sprawdzenie listy wiadomości, kasowanie, kopiowanie, pobieranie na dysk lokalny. Stan uaktualnienie (UPDATE), jest to uporządkowanie wiadomości w skrzynce po operacjach wykonanych przez klienta i zakończenie sesji połączenia.

Przykład wykorzystania komend w protokole POP3-sesja logowania:
USER name valid in the AUTHORIZATION state
PASS string
QUIT

STAT valid in the TRANSACTION state
LIST [msg]
RETR msg
DELE msg
NOOP
RSET
QUIT

Komendy opcjonalne:
APOP name digest valid in the AUTHORIZATION state

TOP msg n valid in the TRANSACTION state
UIDL [msg]
Przykłady odpowiedzi serwera:
+OK
-ERR

Przykład sesji POP3:

S: <wait for connection on TCP port 110>
C: <open connection>
S: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>
C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
S: +OK mrose's maildrop has 2 messages (320 octets)
C: STAT
S: +OK 2 320
C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
S: .
C: RETR 1
S: +OK 120 octets
S: <the POP3 server sends message 1>
S: .
C: DELE 1
S: +OK message 1 deleted
C: RETR 2
S: +OK 200 octets
S: <the POP3 server sends message 2>
S: .
C: DELE 2
S: +OK message 2 deleted
C: QUIT
S: +OK dewey POP3 server signing off (maildrop empty)
C: <close connection>
S: <wait for next connection>

W powyższych przykładach litera “C” oznacza klienta, “S” oznacza odpowiedzi od serwera.
Podsumowując protokół POP3, można powiedzieć, że ze względu na jego prostotę i tekstową komunikację, możliwe jest bezpośrednie stosowanie protokołu przez użytkownika za pomocą poleceń tekstowych i programu „telnet”.

3.2.2. Protokół SMTP

SMTP (ang. Simple Mail Transfer Protocol) jest kolejnym protokołem służącym do komunikacji i transportu poczty elektronicznej. Jego zadaniem jest wysyłanie i odbieranie wiadomości i standardowo używa portu 25. Protokół ten powstał na początku lat osiemdziesiątych, a jego specyfikacja została opisana w dokumencie RFC 821[12].
Z początku został on zaprojektowany do użytkowania przez maszyny na stale podłączonej do Internetu. Początkowo za pomocą tego protokołu można było przesyłać tekst w kodzie ASCII( siedmio bitowego), do przesyłania natomiast obrazów w formacie JPG i różnych programów zastosowany został standard MIME. Obecnie używa się standardu 8BITMIME do przesyłania plików graficznych.[3], dzięki niemu można bardzo łatwo przesyłać zakodowane pliki binarne tak samo jak tekst. Wprowadzenie MIME pozwoliło także na przesyłanie w listach tekstowych znaków z użyciem polskich czcionek. W 1995 roku określono w dokumencie RFC 1869 zasady roszczeń dla protokołu SMTP. Jednym z najnowszych osiągnięć dotyczących protokołu SMTP było rozszerzenie go o metody autoryzacji nadawcy przed wysłaniem wiadomości(SMTP-AUTCH)[3]. Dzięki wykorzystaniu tej opcji istnieje zabezpieczenie w wysyłaniu wiadomości od nieautoryzowanych nadawców.
W odróżnieniu od POP3 protokół SMTP jest głównym elementem systemu pocztowego, jest o wiele od niego ważniejszy. SMTP umożliwia nie tylko wysyłanie wiadomości na skrzynkę pocztową, ale także na konsolę(ekran) użytkownika[2]. Za pomocą tego protokołu użytkownicy systemu wysyłają wiadomości email do kolejnych węzłów w sieci(hostów), natomiast programy pocztowe, które nie są serwerami mogą swobodnie włączyć się do systemu sieciowego i wymieniać informacje za pomocą poczty elektronicznej. Protokół SMTP może być wykorzystany w różnych sieciach, nie jest przypisany tylko do standardu TCP/IP. Ze względu na takie możliwości przesyłania w różnych standardach może on zapewniać przesyłanie pośrednie.
W poniższej tabeli przedstawiono wszystkie polecenia standardu SMTP.

Tabela 2. Spis poleceń standardu SMTP
Kod polecenia oraz argument Wartość argumentu/ wykorzystanie
HELO <SP> <domena> <CRLF> Nazwa domeny hosta klienta
MAIL <SP> FROM: <ścieżka odwrotna> <CRLF> Identyfikuje nadawcę oraz ewentualnie adres zwrotny
RCPT <SP> TO:<ścieżka rzekazania> <CRLF> Identyfikuje odbiorcę poczty (jego adres)
DATA <CRLF> Po tej komendzie następuje transmisja treści
RSET <CRLF> Wyzerowanie ustawień aktualnej sesji
NOOP <CRLF> Polecenie kontrolne
QUIT <CRLF> Zakończenie sesji
HELP [ <SP> <ciąg znaków> ] <CRLF> Informacja pomocnicza
SEND <SP> FROM:<ścieżka odwrotna> <CRLF> Skierowanie danych bezpośrednio na terminal użytkownika
SOML <SP> FROM<ścieżka odwróma> <CRLF> Realizuje funkcję Send lub Mail
SAML <SP> FROM:<ścieżka odwroh1a> <CRLF> Realizuje funkcję Send i Mail
VRFY <SP> <ciąg znaków> <CRLF> Weryfikacja czy argument identyfikuje użytkownika
EXPN <SP> <ciąg znaków> <CRLF> Weryfikacja czy argument identyfikuje listę wysyłkową
TURN <CRLF> Zamiana ról serwer/klient

Na architekturę protokołu SMTP, w odróżnieniu od pojęcia klient-serwer w połączeniach składa się strona nadająca i odbierająca. Jest to dosyć ważne, gdyż w każdej chwili może dojść do zamiany ról i strona , która w danej chwili była klientem, może stać się odbiorcą i na odwrót.
Komunikaty odbywają się podobnie jak w rozwiązaniach z POP3, ponieważ ten protokół korzysta z rozwiązań SMTP. Dialog oparty jest na wymianie komunikatów za pomocą ciągów tekstowych w formie linii zakończonych separatorem CRLF. Komunikaty nadawcy to polecenia, oprócz poleceń możemy wykonać także przesłanie wiadomości[2]. Zalogowanie do skrzynki pocztowej przebiega podobnie jak w przypadku POP3, czyli wymaga autoryzacji, podania nazwy użytkownika i hasła. Możemy także to przetestować za pomocą programu Telnet. Specyfikacja tego protokołu opisuje zachowanie serwera(odbiorcy) po poprawnie przeprowadzonej transakcji wysyłania wiadomości. Odbiorca otrzymuje informacje w postaci nagłówka wiadomości, w którym zawarte są informacje przez jakie serwery pocztowe przeszła wiadomość za nim trafiła do odbiorcy, kiedy i od kogo została wysłana, oraz z jakiego hosta.

3.2.3. Protokół IMAP

Protokół IMAP został stworzony w 1986 roku , natomiast rok później pojawiła się jego późniejsza wersja IMAP2, która została wdrożona na systemach UNIX. Pierwszy dokument RFC opisujący ten protokół został napisany w 1988 roku. W 1994 roku pojawiła się wersja IMAP4, która uzyskała status standardu RFC 1730-1733[12]. Najnowsza wersja tego protokołu pochodzi z roku 2003 i otrzymała nazwę IMAP4rev1, opisana jest w dokumencie RFC 3501. Protokół ten działa na porcie 143 [3]. Najnowsze programy pocztowe zostały wyposażone do odbioru poczty za pomocą nie tylko protokołu POP3, ale także IMAP.
Jest to alternatywny protokół w stosunku do POP3 do odbioru poczty, jednak jego możliwości są znacznie wyższe. Zasadniczą różnica jest to, iż operuje on na folderach i pozwala na przechowywanie wiadomości w różnych zakładanych przez użytkownika katalogach. Dzięki protokołowi IMAP wiadomości znajdujące się na serwerze nie są usuwane po przeczytaniu, ale znajdują się w folderze wiadomości przeczytanych i pozostają tam do momentu skasowania ich przez użytkownika. W odróżnieniu od POP3 IMAP umożliwia zdalne zarządzanie skrzynka pocztową i wykonywanie operacji na folderach, ponadto pozwala na przeszukiwanie wiadomości na serwerze i poranie na dysk komputera jedynie takich, które wybrał sobie użytkownik. W związku z tym, iż wiadomości na serwerze nie są kasowane lub usuwane automatycznie po przeczytaniu, lub po jakimś określonym czasie, konieczne stało się wprowadzenie limitu na ilość przechowywanych wiadomości w skrzynce odbiorczej. Z reguły ma to ograniczenie na wielkość skrzynki pocztowej. Dzięki temu protokołowi mamy możliwość pobrania nie tylko wiadomości, ale także pobranie nagłówków wiadomości, lub części wiadomości bez załączników. Duże znaczenie ma to dla użytkowników nie mających stałego dostępu do Internetu, lub bardzo wolnego łącza Internetowego. Protokół IMAP jest dosyć skomplikowany, co wiąże się z jego małą popularnością. Jednak niewątpliwie jego dużą zaletą jest przechowywanie wiadomości na serwerze, i nie ściąganie ich w całości na dysk, ma to duże znaczenie przy zwiększającym się w bardzo szybkim tempie ruchu w sieciach komputerowych. IMAP jest bardzo dobrym protokołem dla nieco zaawansowanych użytkowników i mających określone kryteria w pobieraniu wiadomości. Pozwala nie tylko na zaoszczędzenie czasu na pobieranie zbędnych wiadomości, ale także na wyodrębnienie ważnych wiadomości z całej skrzynki pocztowej, w której może znajdować się nie tylko mnóstwo wiadomości, ale dużo spamu.
3.2.4. Metody autoryzacji i zabezpieczenia systemów poczty elektronicznej

Sieć Internet oferuje wiele usług. Niemal każda z nich wymaga autoryzacji, czyli weryfikacji użytkownika. Rolą serwera jest udostępnianie usług i swoich zasobów użytkownikom. Z uwagi na dużą i stale rosnącą ilość użytkowników Internetu, oraz korzystania przez nich z coraz większej ilości usług internetowych konieczne stało się udostępnianie zasobów, dla określonych grup użytkowników.
Najprostszą metodą jest metoda kontroli dostępu, polegająca na zliczaniu aktualnie obsługiwanych połączeń. Po przekroczeniu limitu kolejne połączenia są odrzucane z załączeniem odpowiedniego komunikatu informacyjnego. Większość systemów sieciowych wykorzystuje proces weryfikacji użytkownika na podstawie przydzielonej mu nazwy użytkownika, tak zwanego identyfikatora[2].
Każda sesja rozpoczyna się od procedury kontroli dostępu, a po przywitaniu użytkownika serwer oczekuje, na przestawienie się klienta za pomocą odpowiedniego identyfikatora i hasła. Po poprawnej weryfikacji(autoryzacji) następuje udostępnienie użytkownikowi konkretnych zasobów, w zależności od uprawnień jakie zostały mu nadane, lub do jakiego zasobu ma dostęp dany użytkownik. Błędna weryfikacja użytkownika, nie pozwala na dostęp do zasobu serwera, a także może być odnotowana w dzienniku systemowym.
Niezależnie od metody transmisji zawsze ważną rzeczą jest problem bezpieczeństwa systemu, czyli rzeczywistej kontroli dostępu. W zależności od stosowanego oprogramowania systemu sieciowego, oraz protokołu, operacja ta może odbywać się na kilka różnych sposobów. Dostęp za pomocą hasła oznacza, że przy próbie każdego połączenia istnieje konieczność podania hasła dostępu, oprócz nazwy użytkownika[3]. Tego typu transmisje są podatne na podsłuchy za pomocą dostępnych programów do przechwytywania transmisji.
Większość protokołów pocztowych pracuje w oparciu o jawne przesyłanie poleceń i argumentów. Zapisana jest ona w kodzie ASCII. Przechwycenie całej sesji SMTP pozwala na rozpoznanie wszystkich elementów przesyłanego listu, łącznie z jego treścią, natomiast przechwycenie sesji POP3 pozwala na uzyskanie identyfikatora, oraz hasła dostępu, czyli można dzięki temu uzyskać nieautoryzowany dostęp do skrzynki pocztowej.
Rozwiązaniem, które może zmniejszyć niebezpieczeństwo przechwycenia sesji połączeniowej protokołów pocztowych może być zabezpieczenie z zastosowaniem kodowanego hasła. Taka idea została wykorzystana w protokole POP3. Za pomocą odpowiedniego polecenia, znacznika czasowego otrzymywanego od serwera, oraz algorytmu MD5 możliwe jest zakodowanie hasła i przesłanie jego przez sieć. Przy korzystaniu z poczty elektronicznej należy pamiętać, iż popularne standardy POP3 i SMTP nie oferują żadnych mechanizmów do ochrony przesyłanych danych.
Sposób działania wspomnianych protokołów pocztowych uniemożliwia szyfrowanie całej transmisji. Same polecenia i ich argumenty z wyjątkiem hasła są przesyłane w sposób jawny, także odpowiedzi serwera są transmitowane jawnie. Teoretycznie nawiązując sesję POP/SMTP można byłoby wykorzystać mechanizm kodowania hasła POP3, to jest znacznik czasowy serwera oraz algorytm, c pozwoliłoby na niejawna transmisję. Rezygnując z takiej metody szyfrowania na korzyść kodowania według klucza znanego tylko odbiorcy i nadawcy wiadomości (rezygnacja ze znacznika czasowego, co jest podstawą kodu) możemy ograniczyć możliwość ewentualnego podsłuchu. Standardowo usługa POP3 działa na porcie 110, można byłoby stworzyć program, który będzie nasłuchiwał na innym gnieździe np. 111, i na ten port mógłby się zgłaszać klient nadający zaszyfrowanym POP, każda linia zdekodowana i odebrana na porcie 111, mogłaby zostać podana na port 110 wewnątrz serwera. W takim przypadku możliwe byłoby zastosowanie dowolnego programu realizującego funkcje serwera lub klienta poczty elektronicznej[2]. Oczywiście taki program musiałby przechwytywać port 110, obsługiwać porty sieciowe, wykorzystujący zadany mu klucz i algorytm. Przedstawione powyżej sposoby zapewniają szyfrowanie całej transmisji, ale wymagają także dosyć skomplikowanych zabiegów. Prostszym rozwiązaniem mogłoby być szyfrowanie samej treści wiadomości, gdzie w takim przypadku dwa z trzech wchodzących w skład listu elementów(koperta z adresem nadawcy i odbiorcy, oraz nagłówki), byłyby transmitowane w wersji oryginalnej, czyli jawnej. Sama treść wiadomości mogłaby zostać zaszyfrowana dowolnym programem kodującym, rozwiązanie takie jest niezwykle proste, i nie wymaga żadnych zmian w programach do transmisji wiadomości.
Metoda podwójnego klucza PGP ( ang. Preety Good Privacy) jest to program pracujący na algorytmie RSA, opracowanym w 1977 roku. Został napisany na początku lat dziewięćdziesiątych przez Phila Zimmermanna[2]. Algorytm wykorzystywany jest do wielu popularnych usług internetowych . Miedzy innymi możemy do nich zaliczyć przeglądarki internetowe, stosujące bezpieczne połączenia SSL, program Secure Stell(SSH) do połączeń telnetowych, oraz program PGP, służący do utajniania poczty elektronicznej. Zastosowanie algorytmu RSA praktycznie w żadnym programie nie jest stosowane do szyfrowania całej przesyłanej wiadomości, ze względu na bardzo powolne działanie tego algorytmu. Za pomocą RSA szyfruje się jedynie klucz dla innej metody szyfrowania. Klucz ten jest generowany losowo dla każdego połączenia i jako klucz sesji przekazywany z pomocą RSA drugiej stronie. Metoda podwójnego klucza to metoda klucza publicznego, która powstała na przełomie lat siedemdziesiątych. W tej metodzie nie ma jednego klucza wspólnego dla obu stron komunikujących się, natomiast każda z nich posiada dwa klucze, ściśle ze sobą związane. Jednym z nich jest klucz publiczny udostępniany na zewnątrz, a drugim klucz prywatny, który znany jest tylko właścicielowi. Podstawą działania takiego algorytmu jest to, że to co zostanie zaszyfrowane kluczem publicznym może być odszyfrowane jedynie kluczem prywatnym z tej samej pary, natomiast to co zostanie zaszyfrowane kluczem prywatnym, może zostać odszyfrowane przez każdego kto zna klucz publiczny z tej samej pary. Zastosowanie klucza prywatnego pozwala na jednoznaczną identyfikację nadawcy[2].
Bezpieczeństwo dowolnego systemu sieciowego zależy od wykorzystywanych w nim protokołach transmisji. Popularne protokoły pocztowe jak SMTP i POP3 posiadają znikomy poziom zabezpieczeń[3]. Dostępne na rynku rozwiązania pozwalają na znaczne podwyższenie poziomu bezpieczeństwa transmisji, nie tylko poczty elektronicznej, ale także całego szeregu popularnych usług, jak na przykład praca zdalna lub strony hipertekstowe.

4. Implementacja systemu

4.1. Narzędzia i technologie

W projekcie zostało wykorzystane popularne środowisko programistyczne Microsoft Visual Studio Express Edition 2005. Jest to finalne wydanie produktu z rodziny Visual Studio, ale w wersji okrojonej specjalnie dla potrzeb studentów, amatorów i początkujących programistów[7]. Wersja Visual Studio Express Edition 2005 umożliwia zapoznanie się z platformą .NET, oraz tworzenie oprogramowania dla systemu Windows, aplikacji internetowych i kontrolek. Jedną z jej największych zalet jest bezpłatny dostęp do środowiska programistycznego, które można pobrać na komputer ze strony http://msdn.microsoft.com/studio/Express/. Wraz z oprogramowaniem firma Microsoft udostępniła także 200 MB danych z samouczkami i tutorialami wprowadzającymi do nauki programowania na platformie[6] .NET. Bezpłatna wersja oprogramowania możliwa jest także do wykorzystania w celach komercyjnych. W skład oprogramowania w wersji Express wchodzą: Visual Basic 2005 Express, Visual C# 2005 Express, Visual C++ 2005 Express, Visual Java# 2005 Express, oraz Visual Web Developer 2005 Express Edition. Do korzystania z oprogramowania w wersji Express konieczna jest bezpłatna rejestracja produktu w ciągu trzydziestu dni od momentu zainstalowania na stronie http://www.microsoft.com, w zamian otrzymamy wiele ciekawych pomocy i poradników dotyczących programowania w wyżej wymienionych środowiskach, oraz zestawy darmowych ikonek możliwych do użycia w projektowanych aplikacjach[5].
Do działania programu potrzebna jest zainstalowana w systemie wersja 2.0 platformy .NET. Platforma .NET pojawiła się od 2000 roku i występuje obecnie w wersji 3.0, oraz 3.5 w wersji beta. Jest to nowa platforma do tworzenie oprogramowania, zaprojektowana w celu ułatwienia tworzenia obiektowych aplikacji internetowych[4]. Do zasadniczych cech modelu .Net należą:
-Pełna współpraca z istniejącym kodem Win 32, istniejący kod binarny COM można mieszać z nowszym modelem COM.Net i odwrotnie, natomiast mechanizm PInvoke pozwala na na wywoływanie funkcji w języku C, jak na przykład Win 32 API z zarządzanego kodu
-Całkowita i zupełna integracja językowa, platforma COM.NET pozwala na dziedziczenie, obsługę wyjątków, oraz między językowe debugowanie
-Wspólny mechanizm wykonawczy dla wszystkich języków rozpoznawanych w .NET.
-Biblioteka klas podstawowych dająca ochronę przed złożonością surowych wywołań API, oferująca model obiektowy dla wszystkich języków obsługiwanych na platformie
-Uproszczony model projektowania, gdzie nie musi być rejestrowana kopia jednostki wykonawczej w rejestrze systemowym, a także możliwe jest istnienie wielu wersji tej samej biblioteki DLL w jednym komputerze
Platforma .NET składa się z trzech podstawowych elementów, należą do niej: CLR, CTS, oraz CLS. Środowisko uruchomieniowe to CLR(ang. Common Language Runtime) i odpowiada ono za procesy zarządzania pamięcią i zliczanie referencji. CLR odpowiada także za odzyskiwanie pamięci, a w odróżnieniu od języków C i C++, jest on odpowiedzialny za usuwanie obiektów. Dzięki temu pozwala to na szybkie odnalezienie obiektów ze sterty i zwolnienie zajmowanych przez nie pamięci. Pośredni poziom biblioteki klas i platform .NET obejmuje mechanizmy obsługi klas, oraz typów zapewniających komunikację pomiędzy procesami, obsługę formatu XML, wątki, operacje wejścia i wyjścia, oraz bezpieczeństwo. Pośrednia warstwa zawiera także komponenty umożliwiające dostęp do danych w ADO.NET. Platforma .NET obsługuje aplikacje internetowe i rozproszone. Kolejnym blokiem tworzącym platformę .NET jest CTS, który opisuje wszelkie możliwe typy danych obsługiwanych przez środowisko uruchomieniowe, interakcje między typami, oraz określa ich prezentację za pomocą metadanych. CLS jest zbiorem zasad definiujących podzbiór wspólnych typów i pozwala na wykorzystanie kodu binarnego we wszystkich językach współpracujących na platformie. Poza tymi trzema komponentami platforma .NET zapewnia hermetyzację prymitywnych typów plików, generowania grafiki, pozwala na manipulację bazami danych, integracje z językiem XML, a także zapewnia bezpieczeństwo programistyczne i konstrukcję sieciowych aplikacji[5].
Specyficznym językiem tej platformy jest język C#. Został on stworzony w oparciu o doświadczenia z wielu języków jak: C (wysoka wydajność), C++ (obiektowość), JAVA (odzyskiwanie pamięci, bezpieczeństwo), oraz Visual BASIC (szybkie tworzenie aplikacji)[4]. Środowisko uruchomieniowe to środowisko w którym wykonywane są programy. Komponenty napisane w języku C# mogą być używane przez inne procesy działające na tym samym komputerze lub na innych maszynach w sieciach lokalnych i WWW. W środowisku C# 2005 Express możemy projektować aplikacje Windows Forms, aplikacje internetowe oraz aplikacje konsolowe[15].
Biblioteka FCL umożliwia obsługę asynchronicznego wejścia i wyjścia, oraz inne klasy, tak aby nie było konieczności zarządzania wątkami. Sam język C# umożliwia również usługę obsługi wątków i synchronizacji. Platforma.NET umożliwia także wywoływanie obiektów COM za pomocą języka C#, oraz używanie klas napisanych w języku C# w komponentach COM[16]. W najnowszej wersji języka C# 3.0 powstało wiele zmian w stosunku do wersji poprzedniej. Główne zmiany dotyczyły zmniejszenia ilości wpisywanego kodu, oraz skoncentrowaniu się na tworzeniu stabilnych programów. C# to język doskonały do pisania programów na platformę .NET. Jako język programowania jest niezwykle wydajny, prosty, stabilny i dobrze przemyślany. To także język obiektowy i w pełni przystosowany do tworzenia aplikacji internetowych w środowisku .NET. Obecnie jest najczęściej wykorzystywanym językiem przez programistów platformy .NET. Składnia języka C# jest podobna do Javy i C++, także mechanizmy wykorzystywane w nim zostały zaczerpnięte z Javy[15].
4.2. Opis programu

Usługa dla systemu Windows powstała w celu ułatwienia korzystania z programów zainstalowanych na jednym komputerze dla pozostałych użytkowników systemu. Jest to możliwe dzięki wykorzystaniu nowoczesnych technologii, oraz zalet protokołów pocztowych. Takie rozwiązanie pozwala ona na użytkowanie oprogramowania komputerowego w sposób bardziej wydajny i oszczędny bez naruszania zasad licencji programów. Istotną rolę w systemie pełni funkcja obsługi programu za pomocą poczty elektronicznej. Dzięki takiemu rozwiązaniu, użytkownicy systemu nie mają bezpośredniego dostępu do zainstalowanych programów na komputerze administratora systemu, ani też nie mogą bezpośrednio z nich korzystać. Cała komunikacja między programem konwersji plików a użytkownikami systemu odbywa się jedynie za pomocą poleceń wysyłanych w wiadomości elektronicznej. Zaletą programu jest to, że współpracuje on z dowolnym programem do obsługi poczty. Użytkownik systemu może wysłać polecenie do serwera konwersji plików z dowolnego klienta pocztowego i otrzyma odpowiedź na swój adres emailowy, także za pośrednictwem poczty. Konieczne jest jedynie prawidłowe skonfigurowanie programu do konta pocztowego założonego na serwerze pocztowym.
Przetwarzanie zleceń przez serwer odbywa się na kilka sposobów. Pierwszym z nich jest wysłanie pustego emaila z tematem wiadomości „pomoc”. W odpowiedzi od programu serwera otrzymamy emailem listę wszystkich dostępnych poleceń jakie można wykonać i nazwy usług, oraz informację w jaki sposób należy korzystać z systemu. Usługi te można dowolnie konfigurować i modyfikować. Kolejnym sposobem jest wybranie przez użytkownika usługi z dostępnych w systemie i wpisanie jej nazwy w temacie wiadomości email. Następnym krokiem jest dołączenie pliku do przekonwertowania w postaci załącznika i wysłanie wiadomości. W odpowiedzi otrzymamy wynik działania w postaci pliku załączonego w attachmencie, wraz z opisem jaka transformacja została dokonana.
Ważną rolę w systemie pełni administrator, który może dodawać, odejmować użytkowników i nadawać użytkownikom uprawnienia w zakresie dostępu do korzystania z aplikacji. Uprawnienia mogą być dowolnie modyfikowane zarówno z poziomu menu jak i za pomocą poczty elektronicznej. Nadanie użytkownikom uprawnień zostanie przedstawione i pokazane na przykładach w dalszej części pracy.
Administracja jest ważnym czynnikiem ze względu na to, że zabrania dostępu do usług niepowołanym osobom zwiększając bezpieczeństwo, a także pozwala na nadawanie różnych zakresów uprawnień. Administratora należy skonfigurować z panelu menu i zaznaczyć za pomocą „checkboxa”. Po prawidłowej konfiguracji możemy przystąpić do modyfikacji i nadawania uprawnień użytkownikom. Można tego dokonać z menu, bądź za pomocą komend wysyłanych drogą elektroniczną. Zadania takie jak „dodaj”, „usuń”, oraz lista użytkowników są akcjami zarezerwowanymi jedynie dla administratora systemu. Akcja „pomoc” może zostać wywołana przez wszystkich użytkowników systemu.
Komenda „dodaj” w temacie wiadomości doda użytkownika systemu dla jednego polecenia. Należy ją podać w temacie wiadomości, a następnie w treści opisać adres email użytkownika i nazwę usługi z jakiej można korzystać. Jeśli użytkownik nie był wcześniej zdefiniowany w systemie zostanie także dodany do listy wszystkich użytkowników. Podobnie wygląda sytuacja z odbieraniem uprawnień dla danej usługi. W temacie wiadomości należy wpisać „usuń”, a treść wiadomości opisać w postaci schematu jak przy komendzie ”dodaj”. Jeśli nazwa usługi nie zostanie zdefiniowana, użytkownik zostanie całkowicie usunięty z listy wszystkich użytkowników i nie będzie miał żadnych uprawnień.
Lista użytkowników to część systemu w której znajdziemy listę uprawnionych do wykonywania zadań i korzystania z usług w systemie. Kolejnym ważnym elementem systemu jest lista usług. Zawiera ona nazwy usług wraz z opisem jakie operacje zostaną wykonane przy wywołaniu takiego polecenia. Konfiguracja usług odbywa się tylko z poziomu menu, natomiast lista użytkowników może być konfigurowana zarówno z menu, jak i za pomocą wiadomości email.
4.3. Opis implementacji

Projekt systemu składa się z trzech zasadniczych części. Każdy pakiet w systemie odpowiada za inną funkcjonalność. DocumentTransformSerwice jest jednym z najistotniejszych elementów systemu, odpowiada za przetwarzanie informacji w całym systemie. TransformTray to element systemu służący do przesyłania informacji, pełni funkcje zarządzające całym systemem, a ponieważ usługa Windows nie może posiadać własnego GUI, w związku z tym zaistniała potrzeba stworzenia interfejsu. TransformServiceSetup to część instalatora projektu. Wzajemna integracja i przesyłanie informacji w systemie o aktualnym stanie oraz konfiguracji w systemie się za pomocą wymiany informacji przez plik konfiguracyjny XML. W pliku XML zapisane są aktualne informacje dotyczące przetwarzanych dokumentów, o aktualnym stanie przetwarzanych dokumentów, a także dokumentach oczekujących w kolejce. Procesy TransformTray oraz TransformService mają ustawione specjalne nasłuchy, które są ustawione w serwisie i wyzwalane w trakcie zmiany pliku. Jeśli konfiguracja zostanie zmieniona przez serwis lub komendę „dodaj, usuń” to specjalny nasłuchiwacz spowoduje odpowiednią reakcję w serwisie TransformTray. Podobnie jeśli dokonamy jakieś modyfikacji w TransformTray to automatycznie zostanie to odzwierciedlone w serwisie. W przypadku pobierania informacji z Tray’a sytuacja wygląda podobnie, jednakże jest o tyle prostsza, bo komunikacja jest jednokierunkowa.
W projekcie został wykorzystany przykładowy serwer pocztowy na którym zostało założone konto dla serwera konwersji plików, administratora oraz pozostałych użytkowników systemu. Serwer pocztowy jest tylko opcjonalnym składnikiem systemu i może zostać zamieniony na inny.
Jedną z ważniejszych funkcji programu jest obsługa poczty elektronicznej i współpraca z dowolnym klientem pocztowym. Generalnie system .Net 2.0 nie posiada zaimplementowanego klienta Pop3, posiada natomiast klienta Smtp, oraz wsparcie dla wiadomości email. Dlatego też klient ten został zaimplementowany bazując na definicji protokołu. Na funkcje usług pocztowych składają się klasy Pop3, klasy do obsługi wiadomości, kodowania i dekodowania zawartości wiadomości elektronicznych, oraz załączników.
Klasa Pop3MailClient jest klientem pocztowym w projekcie, pozwala na połączenie z serwerem Pop3, nasłuchiwanie czy nie zostały wysłane jakieś wiadomości, deklaruje możliwe do wystąpienia stany połączenia z serwerem pocztowym. Umożliwia ona na jedynie na odbiór prostych wiadomości bez załączników, które są przesyłane w standardzie MIME. Jest on w stanie przetworzyć wiadomości jedynie do trybu Raw. Właściwym klientem jest Pop3MimeClient, który posiada dodatkowe metody umożliwiające prawidłowe przetwarzanie załączników w standardzie MIME, tak zwanych attachmentów. Zdekodowanie wiadomości email następuje przy użyciu QuotePrintable za pomocą procedur do formatu 8 bitowego. Opis zdekodowania informacji do takiego formatu znajduje się w dokumencie RFC 1521/6. Dalsze przetworzenie wiadomości pocztowej następuje w RxMailMessage. Do przetworzenia wiadomości wraz z załącznikami służy funkcja ProcessMimeEntity, to ona pozwala na parsowanie wiadomości do załączników. Dzięki tej funkcji otrzymujemy napełniony obiekt RxMailMessage wraz z nagłówkami wiadomości, oraz załącznikami. Szczegółowe informacje na temat przetwarzania informacji o załącznikach i nagłówkach wiadomości pocztowej znajdziemy w dokumencie RFC2046. Na poniższym diagramie można zobaczyć podstawowe klasy wchodzące w skład pakietu do obsługi poczty, oraz funkcje i metody przez nie realizowane.

Rysunek 2. Diagram klas i metod

Wiadomości email mogą być przesyłane w kilku formatach. Program umożliwia przesyłanie wiadomości w formacie tekstowym. Struktura wiadomości email powinna składać się z co najmniej dwóch części, a zazwyczaj składa się z trzech. Najważniejszą częścią w strukturze email jest „subject”, czyli temat wiadomości. Sam temat w wiadomości email pełni bardzo ważną funkcję, ponieważ zawiera zestaw poleceń z usługą, lub listą usług do wykonania. Lista usług została wcześniej zdefiniowana i według poleceń w temacie wiadomości powinien znajdować się identyfikator usługi. W przypadku wywoływania pojedynczej usługi, może to być na przykład polecenie „doc2pdf” lub „pdf2html”. Usługi mogą też być wywoływane łańcuchowo, to znaczy, że wynik jednej usługi będzie trafiał do kolejnej, automatycznie tworząc „kolejkę wykonawczą”.
Kolejnym ważnym elementem w strukturze wiadomości email jest „body”, czyli zawartość wiadomości. W tej części wiadomości email powinny być zawarte dodatkowe instrukcje dla systemu. Można to zobaczyć na przykładzie opisu tego elementu wiadomości email jak przy dodawaniu lub odejmowaniu użytkowników.
Następną i równie ważną częścią wiadomości pocztowej jest „attachment”, czyli załącznik wiadomości. Jedna wiadomość email może posiadać kilka załączników. Załącznikiem mogą być obiekty typu dokument lub JPG. Pliki znajdujące w załączniku to dokumenty, które chcemy przesłać do programu serwera i przekonwertować korzystając z poleceń dostępnych w systemie.
Konfiguracja systemu zawarta jest w pliku konfiguracyjnym XML. Plik konfiguracyjny składa się z kilku podstawowych części. W części aplikacje zdefiniowane są przykładowe usługi jakie są dostępne w systemie. Zapisany jest tutaj identyfikator, czyli nazwa usługi, ścieżka do usługi w systemie, i rozszerzenie wynikowe dla aplikacji. Jeśli nie ma zdefiniowanego pliku wynikowego, to będzie on identyczny z plikiem źródłowym.
Poniższy fragment pliku XML pokazuje zapis konfiguracji określonej usługi, wraz z listą uprawnionych w systemie użytkowników.
<Aplikacje>
- <Aplikacja nazwa="pdf2image">
<aplikacja>C:Program FilesSoftinterface, IncConvertITPConvertITP.EXE</aplikacja>
<ext>jpg</ext>
<opis>konwersja z PDF do IMG</opis>
<parametry>/S %zrodlo% /T %przeznaczenie% /C#/G/R/L</parametry>
- <Uzytkownik>
<email>uzytkownikx1@localhost</email>
<admin>False</admin>
</Uzytkownik>
- <Uzytkownik>
<email>uzytkownik1@localhost</email>
<admin>False</admin>
</Uzytkownik>
- <Uzytkownik>
<email>administratorx1@localhost</email>
<admin>False</admin>
</Uzytkownik>
- <Uzytkownik>
<email>uzytkownik2@localhost</email>
<admin>False</admin>
</Uzytkownik>
</Aplikacja>

W części opis znajdują się parametry jakie trzeba przekazać dla serwera do poprawnego wykonania usługi. Każda linia poleceń musi zawierać co najmniej dwa parametry „zrodlo% i %przeznaczenie%”. Parametry te to pliki źródłowe oraz docelowe. W tej części także zapisana jest informacja o użytkownikach, którzy mają uprawnienia do wykonania danej usługi.
W dalszej części pliku XML zawarte są informacje związane z odbiorem i wysyłaniem wiadomości email przez serwer. Musi być tutaj podany adres serwera „localhost”, a także dane konta serwera czyli nazwa i hasło. Ważnym czynnikiem w odbiorze i wysyłaniu wiadomości pocztowych jest także podanie adresów serwera i odpowiednich portów Pop3-100 oraz Smtp-25. Oczywiście w tutaj zapisana jest także częstotliwość sprawdzania poczty na koncie serwera. Poniższy przykład pokazuje konfigurację zapisaną w pliku XML dla konta administratora:
<SerwerObliczeniowy>
- <Serwer>
<uzytkownik>admin</uzytkownik>
<haslo>haslo</haslo>
<email>admin@localhost</email>
<POP3>localhost</POP3>
<POP3Port>110</POP3Port>
<SMTP>localhost</SMTP>
<SMTPPort>25</SMTPPort>
<freq>5</freq>
</Serwer>

W części użytkownicy zawarta jest zdefiniowana lista użytkowników.

<Uzytkownicy>
- <Uzytkownik>
<email>uzytkownik1@localhost</email>
<admin>False</admin>
</Uzytkownik>
- <Uzytkownik>
<email>administratorx1@o2.pl</email>
<admin>False</admin>
</Uzytkownik>
- <Uzytkownik>
<email>admin@localhost</email>
<admin>False</admin>
</Uzytkownik>
- <Uzytkownik>
<email>uzytkownik2@localhost</email>
<admin>False</admin>
</Uzytkownik>
</Uzytkownicy>

5.Przykłady zastosowania i wymagania dotyczące instalacji

5.1.Wymogi dotyczące instalacji

Program działa w oparciu o przychodzące zlecenia na serwer konwersji plików za pomocą polecenia zawartego w temacie wiadomości email. Serwer posiada wbudowanego klienta pocztowego, dzięki któremu może odbierać i wysyłać pliki korzystając z usługi serwerów pocztowych POP3 oraz SMTP. Komunikacja odbywa się przy użyciu serwera pocztowego, a częstotliwość odbioru poczty jest sprawdzana co 60 sekund, którą można dowolnie zmieniać. Jeśli nastąpi odebranie wiadomości ze zleceniem w temacie, odbywa się przetwarzanie plików zgodnie ze zdefiniowanym wcześniej poleceniem w konfiguracji menu. Jeśli polecenie jest prawidłowe, zostanie wysłana wiadomość email do użytkownika z wynikiem usługi i załączonym plikiem, oraz opisem co zostało wykonane. Opis znajduje się w temacie wiadomości zwrotnej. Po wysłaniu wiadomości na konto serwera z tematem „pomoc” otrzymamy odpowiedź z listą dostępnych poleceń i nazwami usług.
Na poniższych przykładach zostanie przedstawiona konfiguracja, oraz zasada działania programu. Koniecznym elementem jest posiadanie zainstalowanego w systemie serwera pocztowego, dzięki któremu odbywa się komunikacja za pomocą protokołów pocztowych. Korzystanie z serwera pocztowego może odbywać się za pomocą programu do obsługi poczty elektronicznej lub formularza webowego. Wszystko zależy od tego jaki serwer zostanie użyty, oraz jego cech i możliwości. Istotne jest poprawne jego zainstalowanie i prawidłowa konfiguracja. Wykorzystany w systemie serwer pocztowy to surgemail_37b8_windows. Jest to bezpłatna wersja oprogramowania, tzw. licencja trial. Serwer wykorzystywany w celu testowania oprogramowania serwera konwersji plików jest składnikiem opcjonalnym. Możemy użyć dowolnie wybranego dowolnego serwera pocztowego, podając dane niezbędne w konfiguracji.
Kolejnym wymaganiem dotyczącym instalacji jest posiadanie w systemie programów do przetwarzania i konwersji różnych formatów plików tekstowych i graficznych. Dzięki nim aplikacja umożliwia przetwarzanie zleceń za pomocą programu serwera, działającego na dysku lokalnym. Do przetwarzania różnych formatów plików został wykorzystany darmowy program Convert doc. Jest to aplikacja przetwarzająca pliki na różne formaty jak na przykład: DOC, PDF, HTML, RTF, TXT. Oprogramowanie wykorzystane w pracy jest na licencji trial . Program służy jedynie to testowania oprogramowania i jest przykładowym silnikiem konwersji plików, który może zostać zamieniony na inny. Przykładowa lista plików jaką daje nam użycie programu:

Converting PDF Files
Converting from PDF to DOC
Converting from PDF to TXT (both ascii and Unicode)
Converting from PDF to HTML
Converting from PDF to RTF

Converting Word Documents
Converting from DOC to PDF
Converting from DOC to TXT (both ascii and Unicode)
Converting from DOC to HTML
Converting from DOC to RTF

Converting Text Files
Converting from TXT to PDF
Converting from TXT to HTML
Converting from TXT to DOC
Converting from TXT to RTF

Converting HTML Documents
Converting from HTML to PDF
Converting from HTML to TXT (both ascii and Unicode)
Converting from HTML to DOC
Converting from HTML to RTF

Converting RTF Documents
Converting from RTF to PDF
Converting from RTF to TXT (both ascii and Unicode)
Converting from RTF to DOC
Converting from RTF to HTML

Kolejnym programem do konwersji plików wykorzystanym w testowaniu oprogramowania serwera jest Convert XLS. Jest to także oprogramowanie w wersji trial i umożliwia przetwarzanie dokumentów za pomocą linii „command”. Program ma zastosowanie miedzy innymi w przetwarzaniu dokumentów:

Converting Excel Files:
Convert Excel (XLS) To CSV, TSV (any character delimited)
Convert Excel (XLS) To a Fixed Width Text File
Convert Excel (XLS) To a HTML/XML File
Convert Excel (XLS) To Any File MS Excel Can Save As

Converting CSV (any character delimited) Files:
Convert CSV To an Excel (XLS) File
Convert CSV To a Fixed Width Text File
Convert CSV To HTML/XML
Convert CSV To any file MS Excel Can Save As

Converting Fixed Width Text Files:
Convert Fixed Width Text To an Excel (XLS) File
Convert Fixed Width Text File To a CSV, TSV (or any character delimited) File.
Convert Fixed Width Text To HTML/XML
Convert Fixed Width Text To Any File MS Excel Can Save As

W konfiguracji zostało użytych jeszcze kilka innych programów, umożliwiających przetwarzanie dokumentów, a szczegółowy opis znajduje się w plikach pomocy dotyczących poszczególnych plików.
Kolejnym ważnym czynnikiem jest zainstalowanie oprogramowania na komputerze i uruchomienie serwisu za pomocą konsoli.

Rysunek 3. Instalacja oprogramowania serwisu

Program po instalacji otwiera domyślny folder w „C:Program FilesDocument Transform”. Potem należy uruchomić konsolę z wiersza poleceń lub z folderu DocumentrTransform. Ścieżka dostępu to: „C:ProgramFilesDocumentTransform TransformTray.exe”. Aby usługa w systemie działała prawidłowo należy uruchomić serwis za pomocą menu, lub za pomocą ikony w pasku szybkiego uruchamiania poleceniem „startuj serwis”. W ten sposób także usługa może zostać zatrzymana. W panelu sterowania możemy sprawdzić także, czy serwis został zainstalowany i czy usługa została dodana do listy usług systemowych.
Rysunek 4. Uruchomienie serwisu.

Aplikacja została przetestowana w systemie Windows XP Professional, dlatego zalecane jest korzystanie z niej w systemie Windows XP. Kolejnym działaniem jest uruchomienie programu serwera przez użytkownika, oraz wybór poleceń dostępnych w systemie, służących do konwersji plików. Możemy je wybrać za pomocą menu, które pokaże nam listę dostępnych usług. Istnieje możliwość dodawania innych aplikacji, usuwania, oraz edytowania i konfiguracji. Uruchomienie GUI następuje po dwukrotnym kliknięciu w ikonę na pasku zadań. Stąd także możemy wystartować serwis i go zatrzymać. Sposób uruchamiania serwisu można także skonfigurować za pomocą panelu sterowania, w narzędziach administracyjnych komputera, który będzie skonfigurowany do pracy z oprogramowaniem. W menu plik znajdują się także opcje do uruchomienia i zatrzymania serwisu. Po uruchomieniu menu, można skonfigurować program, podając dane dla serwera pocztowego, administratora, dodać listę usług i użytkowników.
Edycja i modyfikacja usług systemowych.
Rysunek 5. Edycja i modyfikacja usług systemowych

Na rysunku powyżej został pokazany przykład konfiguracji usług w systemie na potrzeby przetwarzania dokumentów. Do prawidłowej konfiguracji kolejnej usługi musimy podać nazwę, jaka będzie dostępna w systemie, kolejno ścieżkę dostępu do aplikacji z linii „command”, parametry wołania, czyli dane, jakie będą nam potrzebne do wywołania polecenia, oraz format pliku, który ma być plikiem wynikowym po przetworzeniu. Ważnym parametrem w konfiguracji usług jest także podanie źródła i przeznaczenia dokumentu do przetwarzania. Parametry potrzebne do konfiguracji polecenia znajdują się w pliku pomocy programu, z którego korzystamy. Programy te umożliwiają przetwarzanie plików na wiele różnych formatów i dają nam wiele możliwości transformacji dokumentów elektronicznych. Jakiego programu użyjemy do konwersji plików nie ma znaczenia dla programu serwera, jednak musi być to program umożliwiający przetwarzanie plików za pomocą linii „command”.

W konfiguracji należy zwrócić uwagę na parametry wołania, gdyż od tego zależy prawidłowe działanie aplikacji. Duże litery i cyfry oznaczają rodzaje plików, jakie formaty wykorzystywane są w przetwarzaniu w danej aplikacji i na jakie zostaną przekonwertowane. Dokładny opis liter i cyfr, oraz skrótów został opisany w pomocy do programu Conwert Doc, oraz Convert Xls, możemy sprawdzić w niej jak należy prawidłowo skonfigurować aplikację do przetwarzania wsadowego. Po dodaniu aplikacji możemy sprawdzić czy działa ona prawidłowo i czy jest dostępna w systemie jako usługa. Należy wtedy wysłać wiadomość do serwera z tematem pomoc, a jeśli wszystko zostało prawidłowo skonfigurowane, otrzymamy odpowiedź z pełną listą dostępnych poleceń i nazw usług w systemie.
Jeśli w systemie zainstalowany jest inny program do konwersji plików i chcielibyśmy dodać go do listy dostępnych usług, należy odpowiednio skonfigurować menu usługi i podać odpowiednie parametry ścieżki dostępu oraz informacje potrzebne do wykonania polecenia uruchamiającego program zewnętrzny. Wykorzystane programy są jedynie przykładami zastosowanymi do testowania środowiska do wsadowego przetwarzania danych. Idealnym rozwiązaniem systemu jest wpisanie listy wszystkich możliwych transformacji, oraz wszystkich dostępnych usług przez osobę uprawnioną do konfiguracji. Po stronie użytkownika możemy wykonywać jedynie polecenia, które wcześniej zostały dodane i prawidłowo skonfigurowane. Użytkownik nie posiada bezpośredniego dostępu do programów, może jedynie wysłać polecenie do serwera z podaniem odpowiedniej nazwy w temacie wiadomości email, z listy dostępnych aplikacji. Na rysunku poniżej została przedstawiona przykładowa konfiguracja listy konwersji dostępnych w systemie. Jeśli zostanie skonfigurowana lista usług, to po zaznaczeniu usługi możemy zobaczyć obok jej opis.

Rysunek 7. Przykładowe usługi systemowe

Lista programów, jakie zostaną użyte zależy od administratora systemu, a także od możliwości programów, muszą one bowiem pozwalać na takiego rodzaju przetwarzanie dokumentów. Składniki te są opcjonalne i można w tym celu użyć na przykład programów antywirusowych, programów do grafiki, a także wielu innych przetwarzających dokumenty elektroniczne. Kolejnym przykładem jest administracja, dodawanie użytkowników i odejmowanie, a także nadawanie uprawnień w systemie. Użytkownicy mogą być dodawani bezpośrednio z menu, oraz za pomocą wiadomości email wysłanej przez administratora z poleceniem w temacie „dodaj”.

Rysunek 8. Dodawanie listy użytkowników za pomocą menu

Rysunek 9. Lista użytkowników

Warunkiem prawidłowego działania aplikacji konieczna jest prawidłowa konfiguracja serwera pocztowego. Należy podać nazwę użytkownika i hasło, oraz adres email. Kolejnym krokiem jest konfiguracja serwerów POP3 i SMTP z podaniem numerów portów i nazw serwerów, jakie są wykorzystywane w komunikacji miedzy użytkownikiem a serwerem. Przykładowa nazwa domeny w jakiej pracuje aplikacja to „localhost”, w takiej też domenie zostały założone konta użytkowników. Do prawidłowej pracy po stronie serwera do konwersji plików muszą zostać podane takie same dane, jakie zostały podane w domenie w której założone zostało konto dla konfiguracji serwera pocztowego. Nadawanie nazw domen jest dowolne i zależy jedynie od możliwości programu
Adres email i hasło serwera mail to adres założonego konta dla serwera z którego korzysta serwis i pobiera zlecenia do wykonania. Tutaj także możemy skonfigurować częstotliwość sprawdzania, czy nie nadeszły nowe wiadomości od użytkowników.

Rysunek 10. Przykładowa konfiguracja serwera pocztowego, oraz częstotliwość sprawdzania wiadomości

5.2.Scenariusze

Poniższe ilustracje pokazują scenariusze zastosowania oprogramowania. Wysłanie zapytania o listę dostępnych aplikacji i możliwości konwersji plików na serwer za pomocą wiadomości email, w tym celu zastosowane zostało polecenie „pomoc”.

Rysunek 11. Zapytanie o listę dostępnych poleceń w systemie

Na poniższym przykładzie możemy zobaczyć listę usług z jakiej można aktualnie korzystać, przesłaną w odpowiedzi na hasło „pomoc”, również za pomocą wiadomości email.

Rysunek 12. Odpowiedź na zapytanie i pomoc serwisu

Przetwarzanie plików odbywa się w kolejności jeden po drugim, co pokazuje kolejny zrzut ekranu.
Rysunek 13. Działanie w trakcie "pobierania" nowych zleceń od użytkowników

Na powyższym przykładzie możemy zobaczyć jak wygląda realizacja usług. Pokazane jest także od kogo zostało przysłane polecenie, identyfikacja użytkownika za pomocą pełnego adresu email, daty i godziny pobrania, oraz nazwy pliku do przetworzenia i rodzaj wykonywanej operacji. W kolumnie stan widzimy jak kolejno jedno po drugim realizowane są zlecenia i na jakim etapie są aktualnie przetwarzane dokumenty.
Sprawdzanie w odstępach czasowych czy nie nadeszły kolejne zlecenia od użytkowników jest zgodne z częstotliwością podaną w konfiguracji serwera mail.

Przykład odpowiedzi z wynikiem usługi „doc2pdf” dla użytkownika 2.

Rysunek 14. Odebranie wiadomości zwrotnej przez użytkownika 2.

Jak widać na powyższym przykładzie wynik działania usługi został przesłany do użytkownika za pomocą załącznika, natomiast opis został umieszczony w temacie wiadomości.

Przykłady dokumentów przed i po transformacji:

Rysunek 15. Przykładowy dokument typu Word

Rysunek 16. Przykładowy dokument w wyniku działania polecenia doc2pdf

Przykład konwersji strumieniowej

Rysunek 17. Konwersja strumieniowa

Jak widać na przykładzie temat wiadomości jest odpowiednim poleceniem w systemie. Jeśli chcemy wywołać kilka parametrów na raz, wtedy musimy wypisać kolejno usługi i załączyć plik w attachmencie. Wynik działania jednej usługi, będzie trafiał automatycznie do drugiej i następnie do kolejnej w zależności od zdefiniowanego polecenia w temacie wiadomości, tworząc kolejkę wykonawczą. Ostanie zdefiniowane zadanie będzie plikiem wynikowym, który zostanie przesłany do użytkownika jako końcowy rezultat działania poleceń.
Administracja w systemie polega na tym, że do każdej zdefiniowanej usługi w systemie mają dostęp jedynie uprawnieni użytkownicy. W przypadku, kiedy użytkownik systemu nie ma uprawnień, otrzyma wiadomość o błędzie, a także o tym, że nie ma uprawnień do korzystania z tego polecenia. Możemy zobaczyć to na kolejnym przykładzie.

Rysunek 18. Przykład odpowiedzi na polecenie wysłane przez użytkownika nieautoryzowanego

Administracja może zostać skonfigurowana z poziomu aplikacji, a także za pomocą wiadomości email. Komendy te jednak są tylko zastrzeżone dla administratora systemu.

Podobnie następuje odbieranie uprawnień w systemie za pomocą wiadomości email, a w temacie wiadomości wpisujemy „usun”.

Rysunek 20. Odbieranie uprawnień

Za pomocą narzędzi administracyjnych w panelu sterowania możemy sprawdzić w jaki sposób działa usługa na komputerze. W podglądzie zdarzeń systemu znajduje się zdarzenie lokalne dotyczące naszej usługi o nazwie „TransformLog.” Po wejściu w kolejne zdarzenia dotyczące usługi systemowej można sprawdzić jakie zdarzenia wystąpiły i kiedy. Na przykład po przesłaniu wiadomości od użytkownika z prośbą o pomoc pojawi się następujące zdarzenie pokazane na rysunku.

Rysunek 21. Podgląd zdarzeń systemowych

Tworzenie wiadomości dla użytkownika.

Rysunek 22. Tworzenie wiadomości dla użytkownika

Kolejnym przykładem jest uruchomienie klienta SMTP:

Rysunek 23. Uruchamianie klienta SMTP

Rysunek 24. Wysyłanie wiadomości email

Dodatkową funkcjonalnością jest podgląd logów systemowych z menu, gdzie można sprawdzić kiedy uruchomiony został serwis i kiedy zatrzymany. Inne informacje jakie można tutaj sprawdzić to jaki użytkownik wysłał plik, nazwę pliku, oraz datę i godzinę wysłania.

Rysunek 26. Logi systemowe z menu głównego na potrzeby administratora

6. Podsumowanie

Celem pracy było stworzenie środowiska do wsadowego przetwarzania danych dla systemu Windows. Cel ten został osiągnięty zgodnie z założeniami. Powstała usługa ułatwiająca przetwarzanie danych i dokumentów elektronicznych na lokalnym serwerze, z wykorzystaniem jego zasobów dla wielu użytkowników sieci lokalnej. Aplikacja powstała w oparciu o protokoły pocztowe POP3 i SMTP. Jest ona zainstalowana po stronie administratora, na stacji klienckiej. Umożliwia przesyłanie zleceń na komputer, na którym zainstalowany jest serwer realizujący zlecenia. Po przetworzeniu danych następuje odesłanie wyniku działania konkretnej usługi w załączniku na komputer użytkownika, wraz z opisem dotyczącym realizacji usługi. Komunikacja przesyłania zleceń jak i odebrania przetworzonych danych odbywa się za pomocą protokołów pocztowych. Program posiada wbudowanego własnego klienta pocztowego. Warunkiem koniecznym jest jedynie posiadanie zainstalowanego serwera pocztowego, który służy do komunikacji, przesyłania zleceń na serwer i odbierania wyników przetworzonych plików. Kolejną funkcjonalnością jest także możliwość komunikacji przy wykorzystaniu popularnych programów pocztowych, po odpowiedniej konfiguracji. Program pozwala na nadawanie uprawnień użytkownikom, dodawanie i odejmowanie użytkowników systemu za pomocą konta administracyjnego, oraz wykorzystanie w tym celu adresów emailowych do autoryzacji w systemie. Administracja zabezpiecza dostęp do oprogramowania przed nieuprawnionymi i nieautoryzowanymi użytkownikami, a w związku z tym jest zapewnione bezpieczeństwo wewnątrz całego systemu. Dzięki zastosowaniu takiego rozwiązania, mamy możliwość skorzystania z programu zainstalowanego na komputerze bez fizycznego dostępu do niego i bez konieczności posiadania licencji użytkowania na kolejny komputer. Nie naruszamy tutaj także zasad licencjonowania programów, ponieważ zlecenia wykonywane są jedynie na komputerze, na którym zainstalowany jest program z licencją, natomiast do użytkowników przesyłane są tylko wyniki działania danego programu. Możliwością rozbudowy aplikacji mogłoby być rozszerzenie i usprawnienie jej komunikacji o protokół pocztowy IMAP. Jest to nowszy protokół do pobierania wiadomości pocztowych, wprowadzający wiele ciekawych, bardziej nowoczesnych rozwiązań w komunikacji niż POP3. Protokół IMAP jest bardziej skomplikowany niż POP3, jednak pozwala na większe możliwości rozwiązań dotyczących komunikacji i zabezpieczeń, a także sposobu przeglądania i odbierania poczty elektronicznej. Kolejnym krokiem w rozwoju aplikacji może być stworzenie interfejsu w oparciu o sieć WWW, tak zwanego interfejsu webowego. Wykorzystanie formularza webowego do logowania do systemu i wybierania zleceń na przykład z dostępnego menu graficznego, byłoby łatwiejsze dla użytkowników, a przy przekazywaniu zleceń do serwera możliwe byłoby pominięcie wpisywania poleceń tekstowych. Takie rozwiązanie mogłoby ułatwić wybieranie przez użytkowników dostępnych usług. Automatyzacja usług mogłaby także ułatwić pracę administratorowi przy wpisywaniu poleceń i konfiguracji listy usług. Środowisko umożliwiające przetwarzanie danych jest usługą dla systemu MS Windows działającą lokalnie. Idealnym rozwiązaniem byłoby wykorzystanie jej w sieci, w zależności od potrzeb danych użytkowników, przedsiębiorstwa lub instytucji. Jest to możliwe ze względu na to, gdyż zaproponowane rozwiązanie w komunikacji za pomocą serwera pocztowego nie ogranicza działania jedyne do stacji klienckiej, na której zainstalowany jest program. Należy także zwrócić uwagę na to, iż różne serwery pocztowe, różnie reagują na to, co jest wpisanie w temacie wiadomości. Dla nas jest szczególnie to ważne, ponieważ temat wiadomości zawiera ważne instrukcje i polecenia w systemie. Serwery pocztowe używają różnego kodowania znaków, a jakiekolwiek zmiany w temacie wiadomości, mogą powodować zmianę polecenia na inne, w związku z tym może nastąpić problem z rozpoznawaniem usług. Idealnym rozwiązaniem byłoby użycie serwera, który nie zmienia zasad kodowania znaków, lub też opracowanie polecenia w taki sposób, aby nie podlegał on modyfikacji przez serwer pocztowy, gdzie trafiają wiadomości dla administratora. Kolejnym rozwiązaniem mogłoby być tutaj stworzenie obsługi wszystkich możliwych wystąpień związanych z kodowaniem znaków przez serwery pocztowe i zaimplementowanie ich w systemie.


7. Literatura

1.“Słownik Encyklopedyczny - Informatyka” Wydawnictwo Europa Autor - Zdzisław Płoski. ISBN 83-87977-16-0 1999rok.
2.„Pisanie programów internetowych” Wydawnictwo Mikom Autor-Andrzej Sopala ISBN 83-7279-003-5 2000 rok
3.„Qmail szybki i wydajny Server pocztowy” Wydawnictwo Helion Autor-Krzysztof Marciniak
4.„Programowanie C#” Wydawnictwo Helion Autor Jeske Liberty ISBN 83-246-0213-5 2006 rok
5.„Język C# i platforma .NET” Wydawnictwo PWN SA Autor Andrew Troelsen ISBN 13:978-01-14740-2(01) 2006 rok
6.http://www.microsoft.com strona traktująca o produktach z rodziny Microsoft Windows, oraz Visual Studio
7.http://msdn.microsoft.com/studio/express/ strona z której można pobrać bezpłatne oprogramowanie z rodziny Visual Studio
8.http://www.centrumxp.pl/WindowsXP/361,2,Programy_wsadowe_bat.aspx strona traktująca o przetwarzaniu wsadowym i programowaniu w systemach Windows na platformie .NET
9.http://www.sciaga.pl/tekst/3287-4-przetwarzanie_wsadowe_w_ms_dos strona traktująca o przetwarzaniu wsadowym
10. http://www.netwinsite.com/cgi-bin/keycgi.exe?cmd=download&product=surgemail strona z której została pobrana darmowa wersja serwera pocztowego
11. http://www.softinterface.com/ strona z której zostało pobrane oprogramowanie do przetwarzania plików na różne formaty
12. http://www.freesoft.org/CIE/RFC/1521/6.htm strona traktująca o dokumentach RFC
13.http://www.cacs.louisiana.edu/~mgr/404/burks/internet/rfcs/rfcs/46/rfc2046.htm strona traktująca o dokumencie RFC 2046
14. http://www.softinterface.com strona, z której pobrano programy do konwersji plików graficznych i PDF
15. „Programowanie C#” Wydawnictwo Helion Autor Jeske Liberty O’Reilly ISBN 83-246-0213-5
16. „Visual C# 2005 Express Edition od podstaw” Wydawnictwo Helion, Autor Jacek Matulewski ISBN 83-246-0334-4


7.1 Spis ilustracji

Rysunek 1. Schemat trybu bezpośredniego........................................9
Rysunek 2. Diagram klas i metod 28
Rysunek 3. Instalacja oprogramowania serwisu 33
Rysunek 4. Uruchomienie serwisu. 34
Rysunek 5. Edycja i modyfikacja usług systemowych 35
Rysunek 7. Przykładowe usługi systemowe 37
Rysunek 8. Dodawanie listy użytkowników za pomocą menu 38
Rysunek 9. Lista użytkowników 38
Rysunek 10. Przykładowa konfiguracja serwera pocztowego, oraz częstotliwość sprawdzania wiadomości 39
Rysunek 11. Zapytanie o listę dostępnych poleceń w systemie 40
Rysunek 12. Odpowiedź na zapytanie i pomoc serwisu 41
Rysunek 13. Działanie w trakcie "pobierania" nowych zleceń od użytkowników 42
Rysunek 14. Odebranie wiadomości zwrotnej przez użytkownika 2. 43
Rysunek 15. Przykładowy dokument typu Word 44
Rysunek 16. Przykładowy dokument w wyniku działania polecenia doc2pdf 44
Rysunek 17. Konwersja strumieniowa 45
Rysunek 18. Przykład odpowiedzi na polecenie wysłane przez użytkownika nieautoryzowanego 46
Rysunek 20. Odbieranie uprawnień 47
Rysunek 21. Podgląd zdarzeń systemowych 48
Rysunek 22. Tworzenie wiadomości dla użytkownika 48
Rysunek 23. Uruchamianie klienta SMTP 49
Rysunek 24. Wysyłanie wiadomości email 49
Rysunek 26. Logi systemowe z menu głównego na potrzeby administratora 50
7.1 Indeks tabel

Tabela 1. Spis poleceń standardu POP3 13
Tabela 2. Spis poleceń standardu SMTP 16

O nas | Reklama | Kontakt
Redakcja serwisu nie ponosi odpowiedzialności za treść publikacji, ogłoszeń oraz reklam.
Copyright © 2002-2019 Edux.pl
| Polityka prywatności | Wszystkie prawa zastrzeżone.
Prawa autorskie do publikacji posiadają autorzy tekstów.