 
***************************************************************************************************

				Aplikacja uzytkowa dla BUFORA 
				         dla READ/WRITE
				server + (clientW oraz clientR)
				nakladki zamiast configu na clientW/clientR
				write-to-archi/read-from-archi


---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
				ARCHI serwer bufora i klient bufora
---------------------------------------------------------------------------------------------------
mserver-FARCHI.c

/home/SYSBUF/buf.config - plik konfiguracyjny
	8200		#PORT
	50000000000LL 	#jesli bedzie limitu na rozmiar pliku np. 50000000000 (50GB) to limit=0
			#w przeciwnym przypadku LIMIT wynosi 50GB. 
			#mozna wpisac 0 lub przed limitem postawic znak "#"
		
	END
plik jest wczytywany przy kazdym pierwszym uruchomieniu servera.
jesli brak jest buf.config to serwer dziala na default port = 8200 oraz nie ma ograniczen do do
romiaru pliku przekazwywanego przez urzytkownika do BUFORA ARCHI


Operacje:
przy operacji WRITE akceptuje protocol-QUERY:
MC=00110220334455&AR=0001&ID=1234567&FN=file-name-declared-in-request&SI=size-of-file

przy operacji READ akceptuje protocol-QUERY:
MC=001122334455&AR=0001&ID=1234567&FN=201409220045&SI=0

kompilacja: gcc mserver-FARCHI.c szyfr/szyfrA.o -o mserverF -lpthread
	lub compile-server
---------------------------------------------------------------------------------------------------
				System plikow BUFORA

w BUFORZE musza popnadto istniec dwa katalogi:
/home/bufW dla operacji WRITE <<<<----- tu beda ladowane pliki do przeniesienia do wezlow
/home/bufR dla operacji READ  <<<<----- tu beda ladowane pliki z wzala dla klienta

plik konfigu'tracujny znajduje sie w /home/SYSBUF/buf.config
plik z lista zdan do sprawdzenia znajduje sie w /home/bufR/.listRW
ta lista jest przesylana przez (usupelniania przez SKZ)
---------------------------------------------------------------------------------------------------
				instalacja HDD w BUFORZE

dysk HDD#1 musi byc monotwany jako  /home/bufW (dla zapisu plikow w BUFORZE)
dysk HDD#2 musi byc montowany jako  /home/bufR (dla odczytu plikow z BUFORA)
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------

				Nakladki (overlap)

zostaly wprowadzoane w celu redukcji liczby parametrow na wejsciu, zamiast pliku typu config

read-to-archi nakladka na clientR
write-to-archi nakaladka na clientW
sources: 	READARCHI.c -> read-from-archi
		WRITEARCHI.c -> write-to-archi

uzycie:
write-to-archi [path/your-private-file] [declared-in-request-filename] [clientID] [nr_archi]
read-fromm-archi [filename-in-archi] [path/filename-defined-by-client] [clientID] [nr_archi]

np.:
write-to-archi [/home/jacek/22.jpg] [0022.jpg] [2211190] [0001]
read-from-archi [201409210034] [/home/jacek/22.jpg] [2211190] [0001]

kompilacja: ./comile-overlap

---------------------------------------------------------------------------------------------------
client-FRARCHI.c (READ)
to samo co clientR.c z ta roznica, ze przekazuje dane w protokole QUERY:

MC=001122334455&AR=0001&ID=1234567&FN=201409220045&SI=0

MC -	pobrany MAC ADDRRESS karty sieciowej klienta (z np:"eth0", "wlan0", "eth1" ...itp.)
	adres mac musi byc zarejestrowany w SKZ w ../VAR/ADMIN/CLIENTS .mac.adm (plik ukryty) 
	jesli w pliku (bufor) /home/SYSBUF/bufor.config bedzie zaznaczenie #MC wowczas 
	MC=_no_mac_need, a parametr mc (patrz nizej) nalezy wpisac "null" lub "NULL"
AR -	numer archi np. 0001, 
ID -	identyfikator klietna

FN -	nazwa pliku w ARCHI
SI - 	rozmiar pliku nalezy podac zawsze SI=0 (poniwaz przy tej operacji
	wilkosc pliku jest znana BUFOROWI)
		
uzycie:
clientRARCHI [filename-in-ARCHI] [path/file-defined-by-client] [ID] [mc] [IP-server] [nr_archi] [port_IP]

	ID - clientID lub bedzie to tymczasowy password (7 znakow)
	mc - "null" lub "NULL" blokuje sprawdzanie MAC ADDRESS, wpis np. "eth0" pobiera MAC ADDRESS  
	      i przekazuje do bufora. Amimin definiuje czy BUFOR wymaga podania mac adresu przez 
	      serwer klienta. Jesli nie ma takiego wymogu nalezy wpisac "null".
	IP-server adres IP serwera, PORT bedzie ustalony i wybrany taki sam dla wszystkich serwerow
	nr_archi - numer archi np. 0001 (standardowe archi)

np.: clientR "201409220046" "/home/jacek/archi/pic22.jpg" "1234567" "eth0" "10.0.0.10" "0001" "8200"

Kompilacja: compile-clients
	
---------------------------------------------------------------------------------------------------
client-FWARCHI.c (WRITE)
to samo co clientW.c z ta roznica, ze przekazuje dane w protokole QUERY:

MC=001122334455&AR=0001&ID=1234567&FN=file-name-declared-in-request&SI=size-of-file

MC -	taka samo jak dla clienta clientRARCHI.c
AR -	numer archi
ID -	clientID (lub tymczasowy passwd - 7 znakow) - ogolnie identyfikator 
FN -	FILENAME (nazwa pliku zadeklaro           ana przez klienta przy "request" w SKZ)
SI -	size of file - to jest automatycznie pobierane, sprawdzane i dopisywane 

Plik nie moze byc zapisany jesli nie bedzie zgodnosci nazwy i clientID lub jesli nie bedzie
wypelnione zamowienie w SKZ. Tymczasowy passwd nie bedzie potrzebny poniewaz plik jeszcze nie 
znajduje sie pod ochorona ARCHI

uzycie:
clientW [path/private-filename-of-the-client] [filename-declared-in-the-request] [ID] [mc] [IP-server] [nr_archi] [port_IP]

np.: clientWARCHI "/home/jacek/Video/film.avi" "film01.avi" "1234567" "eth0" "10.0.0.10" "0001" "8200"

Kompilacja: complile-clients 



---------------------------------------------------------------------------------------------------

				Szyfrowanie przesylanych blokow danych

Wlacznie/wylaczanie szyfrowania przesylanych blokow danych. (cpszyfr/szyfrB.C)
nalezy w plikach: client-FRARCHI.c, client-FWARCHI.c oraz mserver-FARCHI.c

w zmiennych globalnych nadac odpowiednia wartosc zmiennej: 
flag_code_data=1 to szyfrowanie bedzie wlaczone (ON)
flag_code_data=0 to szyforwanie blokow danych bedzie wylaczone (OFF)
nastepnie nalezy przeprowadzic kompilacje: 
./compile-clients
./compile-server

---------------------------------------------------------------------------------------------------
					mserverF as DAEMON 
w BUFORZE nalezy utowrzyc user: chn22

instalator przekopiuje pliki: runserverF oraz msrvFd do katalogu /home/chn22
nastepnie nalezy uzyc chconfig w celu podnoszenia demona mserverF przy kazdym boot OS BUFORA

wlacznie/wylacznie pracy mserverF:
jako root:
mservFd start - uruchamianie demona mserverF
mservFd stop -zatrzymywanie demona mserverF

skrypty uruchomieniwe demona:
runserverF powien byc skopiowany do katalogu /home/chn22
msrvFd rowniez powinien byc skopiowany do katalogu /home/chn22
---------------------------------------------------------------------------------------------------






