From Agentgroup
Jump to: navigation, search
(Configurazione dei Client-host)
(Configurazione di prova)
Line 443: Line 443:
  
 
Il progetto è stato testato utilizzando 2 host. Il Proxy-host è stato utilizzato anche come Client-host, così da avere a disposizione un totale di 2 Client-host.
 
Il progetto è stato testato utilizzando 2 host. Il Proxy-host è stato utilizzato anche come Client-host, così da avere a disposizione un totale di 2 Client-host.
 +
 +
Host                            Configurazione
 +
Proxy-host
 +
          CPU                 SPARC
 +
          Sistema Operativo Solaris
 +
          Versione JDK 1.1.5
 +
Client-host 1
 +
            CPU         SPARC
 +
            Sistema Operativo Solaris
 +
            Browser         Netscape Communicator 4.04 + Patch per AWT 1.1
 +
                                (testato anche con Netscape Communicator 4.05)
 +
Client-host 2
 +
            CPU         Pentium
 +
            Sistema Operativo Windows 95
 +
            Browser         Netscape Communicator 4.04 + Patch per AWT 1.1
 +
 +
 +
 +
[[PROOF]]

Revision as of 11:01, 29 May 2008

Download the PROOF (formerly ProWeb) code v1

The PROOF code was developed by Marco Massari during his thesis work at the University of Modena.


Download code


Instructions

English

Guide to the installation of the framework


Introduction

PROOF (formerly ProWeb) is a proxy server that can change its behaviour depending on the installed software module (called Proxy Module). PROOF is implemented as a general-purpose proxy framework that can embody an application-specific module. Users can exploit the services provided by the module using browsers which

Both the Proxy application and the Proxy Modules are implemented in Java; the classes and interfaces are grouped in the proxy package.

Requirements and Terminology

Two or more hosts are needed to let the application work. Only one of them executes the proxy application, and becomes the proxy server for the other hosts, which are the clients where users run the browsers. In the following, the host executing the proxy application is called Proxy-host, while the other hosts are called Client-hosts. Note that a user can run a browser also on the Proxy-host; in this case, the Proxy-host is also a Client-host. The proxy application requires a Java Virtual Machine 1.1.4 or later running on the Proxy-host. On the client side, a Java 1.1 enabled browser is required on the Client-host.

The following table summarises the above requirements:

Proxy-host:

  • Operating System for which the JDK 1.1.4 or later is available (i.e., Windows 9x, Unix);
  • JDK 1.1.4 or later.

Client-host:

  • Browser Java 1.1 enabled (i.e., Netscape o Communicator 4.04 or later, Internet Explorer 4.0x)


Configuration of the Proxy-host

First of all, creating a "container" directory could be useful. Such directory is called BASE_DIR in the following, and will contain all the directories created during the configuration process. We assume that the absolute path, including the BASE_DIR directory, is called BASE_PATH.

For example, on a Unix box you can create the directory marcomas in the path /export/home; the corresponding BASE_PATH is: /export/home/marcomas


Installation of the Proxy application

To install the proxy application, you need:

  1. Being sure that on the Proxy-host the JDK 1.1.4 or later is available.
  2. Creating a directory in the BASE_DIR one. Let PROXY_APP_DIR be the name of such directory.
  3. Copying in the directory PROXY_APP_DIR the following files that compose the Proxy application:
ProxyMain.class
GenericServer.class
ProxyServer.class
MessageServer.class
ProxyConnection.class
AppletConnection.class


The main class (i.e., the class that contains the main() method) is in the file ProxyMain.class.

Since PROXY_APP_DIR is a subdirectory of BASE_DIR, the absolute path of the directory containing the .class files of the Proxy application is: BASE_PATH<DirSep>PROXY_APP_DIR Where <DirSep> is the directory separator of the used file-system (the slash "/" on Unix, the back-slash "\" on Windows 9x).

For example, you can chose the directory ProxyMain as PROXY_APP_DIR. Following the previous example, the absolute path becomes:

   /export/home/marcomas/ProxyMain
Installation of the "proxy" package

The Proxy application needs the classes and the interfaces of the "proxy" package to work correctly. To install such package act as follows:

  • Create a new subdirectory of the BASE_DIR one. The name of this new directory MUST be proxy, since it contains the files of the classes belonging to the package proxy.
  • Copy in the directory PROXY_APP_DIR the following files that belong to the "proxy" package:
     AppletMsg.class 	               HTTPRequest.class
     AppletMsgBuffer.class 	       HTTPResponse.class
     AppletMsgListener.class 	       IllegalMethodCallException.class
     AppletMsgProtocol.class 	       InvalidFrameTagException.class
     AppletMsgStatement.class 	       MalformedAppletMsgException.class
     AppletMsgSupport.class 	       MimeContent.class
     BadProxyModuleException.class   ProxyEnvironment.class
     BinaryContent.class 	       ProxyService.class
     ControlAppletTag.class 	       ProxyServiceMain.class
     EncodedUrlContent.class 	       ProxyServiceMsgManager.class
     Frame.class 	               TextContent.class
     FrameSet.class 	               ThisProxy.class
     HTMLParser.class                UnexpectedFrameException.class
     HTMLTag.class 	               User.class
     HTTPConnection.class 	       UserAlreadyLoggedException.class
     HTTPMessage.class 	       URLFile.class
     UsersList.class

Since proxy is a subdirectory of BASE_DIR, the absolute path of the directory containing the .class files of the "proxy" package is: BASE_PATH<DirSep>proxy

Following the previous example, the absolute path becomes: /export/home/marcomas/proxy

  • To let the application use the classes and the interfaces of the "proxy" package, the BASE_PATH must be added to the system variable CLASSPATH. Note that the directory containing the subdirectory proxy must be added to the CLASSPATH variable, NOT the directory proxy itself!


Installation of a Proxy Module in the Proxy Application

A Proxy Module must be installed in the Proxy application to make the application work. For each Proxy Module you must:

  1. Create a new subdirectory of BASE_DIR where all the .class files of the Proxy Module will be stored. Let call such directory PROXY_MOD_DIR.
  2. Copy in the directory PROXY_MOD_DIR all the .class files of the Proxy Module, except those ones that contain the byte-code of the Control Applet of the Proxy Module.Since PROXY_MOD_DIR is a subdirectory of BASE_DIR, the absolute path of the directory containing the .class files of the "proxy" package is: BASE_PATH<DirSep>PROXY_MOD_DIR
  3. Copy the files that define the Control Applet in the directory PROXY_APP_DIR (par. 3.1).
  4. To let the Proxy application use the classes of the Proxy Module, add the directory PROXY_MOD_DIR to the CLASSPATH variable.
  5. Add a line in the ASCII file proxyconfig.txt, to tell the Proxy which is the name (without the .class extension) of the main class that implement the Main Component of the Proxy Module. If the proxyconfig.txt file does not exist (you are installing the first ), it must be created in the PROXY_APP_DIR (par. 3.1) directory.

In the downloadable file with the code you can find two Proxy Module examples:

  • Cache Module;
  • SynchBrowsing Module;

Following the previous Unix example, to install the Cache Module, you must:

  • Create the directory CacheModule as subdirectory of /export/home/marcomas
  • Copy in the directory CacheModule the following files:
     RigaRegistro.class
     CacheModule.class
     CacheModuleMain.class
     CacheModuleMsgManager.class
     NotCacheableException.class
     Registro.class
     RegistroAccessi.class
     RegistroCache.class
     Riga.class
     CacheFile.class
  • Copy the file: CacheApplet.class in the directory /export/home/marcomas
  • Add /export/home/marcomas/CacheModule in the CLASSPATH variable.
  • Add the following line to the proxyconfig.txt file:

CacheModuleMain

To install the SynchBrowsing Module the needed actions are similar:

  • Create the directory SynchBrowsingModule as subdirectory of /export/home/marcomas.
  • Copy the following files in the SynchBrowsingModule directory:
     SynchBrowsingWindow.class
     SynchBrowsingModuleMain.class
     SynchBrowsingModuleMsgManager.class
     SynchBrowsingState.class
     SynchBrowsingModule.class
  • Copy the file:
     SynchBrowsingApplet.class

in the directory

     /export/home/marcomas
  • Add /export/home/marcomas/SynchBrowsingModule in the CLASSPATH variable.
  • Add the following line to the proxyconfig.txt file:

SynchBrowsingModuleMain


Execution of the Proxy application

You can now execute the Proxy application, by the command

java ProxyMain

Remember that the ProxyMain.class is the class containing the main() method.

On a Unix box, you can define the following Shell script:

CLASSPATH=/usr/local/jdk/lib/classes.zip:/export/home/marcomas/:/export/home/marcomas/CacheModule:/export
/home/marcomas/SynchBrowsingModule:.
export CLASSPATH
cd /export/home/marcomas/ProxyMain
java ProxyMain

Where the JDK library file classes.zip is assumed to be set in :

/usr/local/jdk/lib/classes.zip

Configuration of the Client-hosts

Disregarding the Operating System, on each Client-host there must be a browser Java 1.1 enabled. Such browser must be configured to use the Proxy-host as the proxy server.

In each HTML page, the Proxy application inserts the Control Applet provided by the installed Proxy Module. There are two ways the browser can load the .class files of the Control Applet:

  1. Retrieving all files from the Proxy itself
  2. Finding a local copy of the "proxy" package. i.e., a copy installed on the Client-host.


In the case 1: the Client-host does not need configuring.

In the case 2: the "proxy" package must be installed on the Client-host as done on the Proxy-host (par. 3.2). In particular, you must take care about the CLASSPATH variable, because the browser must be able to retrieve the .class files of the package.

In the following we assume to use the browser Netscape Communicator 4.05 on a Unix box and that the absolute path of the file java40.jar (which contains the JVM classes for the browser), is the following:

/usr/local/communicator405/java40.jar

The following Shell script can be useful to run the browser:

CLASSPATH=/usr/local/communicator405/java40.jar:/export/home/marcomas/
export CLASSPATH
/usr/local/communicator405/netscape &

We have assumed that the "proxy" package is installed in the directory /export/home/marcomas/. Note that the path of the classes of Communicator (java40.jar) must precede the other ones in the CLASSPATH variable.

Test Configuration

Our first test is based on 2 host. The Proxy-host is used also as Client-host, to have 2 Client-hosts.

Host                               Configuration
Proxy-host 	CPU 	             SPARC
               Operating System     Solaris
               JDK Version          1.1.5
Client-host 1 	CPU 	             SPARC
               Operating System     Solaris
               Browser 	      Netscape Communicator 4.04 + Patch for AWT 1.1
                                    (tested also with Netscape Communicator 4.05)
Client-host 2 	CPU 	             Pentium
               Operating System     Windows 95
               Browser 	     Netscape Communicator 4.04 + Patch for AWT 1.1

Italiano

Guida all´Installazione del framework

Introduzione

Il framwork presentato nella tesi è rappresentato da un'applicazione Proxy scritta in Java, la quale ha la prerogativa di modificare il proprio comportamento sulla base del modulo software o Proxy Module installato sul Proxy. In altri termini il "servizio" che il Proxy fornisce agli utenti che, mediante un browser, si connettono al Proxy dipende dal Proxy Module installato sul Proxy.

Sia l'applicazione Proxy sia i Proxy Module utilizzano classi ed interfacce Java che, nell'ambito del progetto, sono state raggruppate in un apposito package Java: il package "proxy".

Requisiti e Terminologia

Il contesto applicativo del progetto prevede che siano disponibili più host (almeno due). Su uno solo di essi si richiede che venga installata e mandata in esecuzione l'applicazione Proxy scritta in Java. Ciò consente all'host in questione di funzionare da Proxy nei confronti degli altri host, che quindi funzionano da client. D'ora in avanti l'host su cui viene installata l'applicazione Java verrà indicata col termine Proxy-host, mentre i rimanenti host, ovvero gli host degli utenti che intendono connettersi al Proxy, ciascuno mediante il proprio browser, verranno indicati con il termine Client-host. Si noti che nulla impedisce che anche sul Proxy-host un utente possa utilizzare un browser per connettersi al Proxy stesso. In questa eventualità è ovvio che il Proxy-host è pure un Client-host.

Per quanto concerne il Proxy-host, affinché esso sia in condizione di eseguire un'applicazione Java, si richiede che su di esso sia presente una JVM, o, in altri termini, sia presente il JDK versione 1.1.4 o superiore.

Per ciò che riguarda invece i client, si richiede che su ciascun Client-host sia in esecuzione un browser. In particolare si richiede che tale browser sia Java 1.1 enabled, ovvero in grado di eseguire applet Java scritte con la versione 1.1 di Java (e quindi dell'AWT).

La seguente tabella riassume i requisiti sopra esposti:

Host                           Requisiti
Proxy-host 	           Sistema Operativo per il quale sia disponibile  
                          il JDK 1.1.4 o superiore (es. Windows 95, Unix);
                          JDK 1.1.4 o superiore.
Client-host 	           Browser Java 1.1 enabled (es. Netscape o Communicator 4.04 o  
                          superiore, Internet Explorer 4.0x)


Configurazione del Proxy-host

Di seguito viene illustrato il procedimento che occorre seguire per configurare correttamente il Proxy-host, indipendentemente dal Sistema Operativo utilizzato dall'host stesso.

Innanzitutto è opportuno creare una directory che fungerà da "contenitore" per le directory che via via dovranno essere create durante il processo di configurazione. La directory contenitore verrà indicata genericamente con BASE_DIR. Si assuma ora che il percorso assoluto, comprensivo della BASE_DIR, venga genericamente denominato BASE_PATH.

Per esempio, se su un sistema Unix si sceglie come BASE_DIR la directory marcomas, creata all'interno di /export/home, il BASE_PATH corrispondente sarà:

     /export/home/marcomas


Installazione dell'applicazione Proxy

Per installare l'applicazione Proxy, occorre:

  1. Assicurarsi che sul Proxy-host sia installato il JDK 1.1.4 o superiore.
  2. Creare una directory all'nterno di BASE_DIR. Sia PROXY_APP_DIR il generico nome di tale directory.
  3. Copiare nella directory PROXY_APP_DIR i file che compongono l'applicazione Proxy e che sono i seguenti:

ProxyMain.class GenericServer.class ProxyServer.class MessageServer.class ProxyConnection.class AppletConnection.class Il byte-code della classe di avvio (è la classe che contiene il metodo main() ) è contenuta nel file ProxyMain.class.

Dal momento che PROXY_APP_DIR è una sottodirectory di BASE_DIR, il percorso assoluto che individua la directory contenente i file .class dell'applicazione Proxy è dunque: BASE_PATH<DirSep>PROXY_APP_DIR Dove <DirSep> indica il separatore di path proprio del file-system del sistema operativo (lo slash "/" su Unix, il back-slash "\" su Windows 95).

Ad esempio si potrebbe scegliere come PROXY_APP_DIR la directory ProxyMain e quindi, riprendendo l'esemplificazione precedente relativa ad un sistema Unix, il corrispondente percorso assoluto diverrebbe:


/export/home/marcomas/ProxyMain


Installazione del package "proxy"

Per il suo corretto funzionamento, l'applicazione Proxy necessita delle classi (e delle interfacce) appartenenti al package "proxy". Per installare tale package procedere come segue:

  • Analogamente a prima, creare una nuova directory all'interno di BASE_DIR. Dal momento che la nuova directory dovrà contenere i file che appartengono al package Java denominato "proxy", il nome da attribuire alla directory in questione non può essere arbitrario, ma deve essere proxy.
  • Copiare nella directory PROXY_APP_DIR i file che compongono il package "proxy" e che sono i seguenti:


     AppletMsg.class 	              HTTPRequest.class
     AppletMsgBuffer.class 	      HTTPResponse.class
     AppletMsgListener.class         IllegalMethodCallException.class
     AppletMsgProtocol.class 	      InvalidFrameTagException.class
     AppletMsgStatement.class 	      MalformedAppletMsgException.class
     AppletMsgSupport.class 	      MimeContent.class
     BadProxyModuleException.class   ProxyEnvironment.class
     BinaryContent.class 	      ProxyService.class
     ControlAppletTag.class          ProxyServiceMain.class
     EncodedUrlContent.class 	      ProxyServiceMsgManager.class
     Frame.class 	              TextContent.class
     FrameSet.class                  ThisProxy.class
     HTMLParser.class 	              UnexpectedFrameException.class
     HTMLTag.class 	              User.class
     HTTPConnection.class 	      UserAlreadyLoggedException.class
     HTTPMessage.class 	      URLFile.class
     UsersList.class


Dal momento che anche proxy è una sottodirectory di BASE_DIR, il percorso assoluto che individua la directory contenente i file .class del package "proxy" è dunque:

     BASE_PATH<DirSep>proxy

Riprendendo l'esemplificazione precedente relativa ad un sistema Unix, il percorso assoluto corrispondente alla nuova directory diverrebbe:

     /export/home/marcomas/proxy
  • Affinché l'applicazione Proxy possa "vedere" e quindi utilizzare le classi e le interfacce del package "proxy", occorre aggiungere alla variabile di ambiente CLASSPATH il percorso che individui la directory che contiene proxy (non la directory proxy stessa!). Essendo proxy una sottodirectory di BASE_DIR, occorre aggiungere a CLASSPATH BASE_PATH.


Installazione di un Proxy Module sull'applicazione Proxy

L'applicazione Proxy, per poter funzionare, necessita che su di essa vi sia un Proxy Module "installato". Per ogni Proxy Module che si voglia installare, occorre procedere come segue:

  1. Creare una nuova directory all'interno di BASE_DIR atta a contenere tutti i file .class che costituiscono il Proxy Module che si intende installare. Sia PROXY_MOD_DIR il generico nome della nuova directory.
  2. Copiare nella directory PROXY_MOD_DIR tutti i file .class che compongono il Proxy Module ad eccezione del/dei file che contiene/contengono il byte-code che definisce l'Applet di controllo del Proxy Module.

Dal momento che anche PROXY_MOD_DIR è una sottodirectory di BASE_DIR, il percorso assoluto che individua la directory contenente i file .class del Proxy Module è dunque:

     BASE_PATH<DirSep>PROXY_MOD_DIR
  1. Copiare il/i file che definisce/definiscono l'Applet di controllo nella directory PROXY_APP_DIR (par. 3.1).
  2. Affinché l'applicazione Proxy possa "vedere" e quindi utilizzare le classi del Proxy Module, occorre aggiungere alla variabile di ambiente CLASSPATH il percorso che individui la directory PROXY_MOD_DIR.
  3. Aggiungere una riga al file ASCII proxyconfig.txt, riportando il nome della classe (priva dell'estensione .class) che implementa il Main Component del Proxy Module. Se il file proxyconfig.txt non esiste (si sta installando il primo Proxy Module), esso deve essere creato all'interno della directory PROXY_APP_DIR (par. 3.1).

Nell'ambito della tesi sono stati realizzati due Proxy Module:

  • Cache Module;
  • SynchBrowsing Module;

In base a quanto detto e riprendendo l'esempio relativo al caso Unix, per installare il Cache Module, su un sistema occorre:

  • Creare la directory CacheModule (il nome è ovviamente arbitrario), come sotto directory di
     /export/home/marcomas
  • Copiare nella directory CacheModule i seguenti file:
     RigaRegistro.class
     CacheModule.class
     CacheModuleMain.class
     CacheModuleMsgManager.class
     NotCacheableException.class
     Registro.class
     RegistroAccessi.class
     RegistroCache.class
     Riga.class
     CacheFile.class
  • Copiare il file:
     CacheApplet.class

nella directory

/export/home/marcomas
  • Aggiungere /export/home/marcomas/CacheModule alla variabile di ambiente CLASSPATH.
  • Aggiungere una riga al file proxyconfig.txt la seguente riga:

CacheModuleMain Per installare il SynchBrowsing Module è necessario procedere in modo del tutto analogo.

  • Creare la directory SynchBrowsingModule (il nome è ovviamente arbitrario), come sotto directory di /export/home/marcomas.
  • Copiare nella directory SynchBrowsingModule i seguenti file:
     SynchBrowsingWindow.class
     SynchBrowsingModuleMain.class
     SynchBrowsingModuleMsgManager.class
     SynchBrowsingState.class
     SynchBrowsingModule.class
  • Copiare il file:
     SynchBrowsingApplet.class

nella directory

     /export/home/marcomas
      
  • Aggiungere /export/home/marcomas/SynchBrowsingModule alla variabile di ambiente CLASSPATH.
  • Aggiungere una riga al file proxyconfig.txt la seguente riga:

SynchBrowsingModuleMain


Esecuzione dell'applicazione Proxy

Se sono stati seguiti tutti i passi descritti fino a qui, si è ora in grado di mandare in esecuzione l'applicazione Proxy, attivando la JVM messa a disposizione dal JDK, attraverso l'invocazione del comando:

java ProxyMain

Si ricordi infatti che ProxyMain.class è la classe di avvio dell'applicazione Proxy.

Per comodità, su un sistema Unix, può essere utile definire il seguente Shell script:

CLASSPATH=/usr/local/jdk/lib/classes.zip:/export/home/marcomas/:/export/home/marcomas/CacheModule:
/export/home/marcomas/SynchBrowsingModule:.
export CLASSPATH
cd /export/home/marcomas/ProxyMain
java ProxyMain

Si è implicitamente assunto che il file classes.zip del JDK installato sul Proxy-host sia individuato dal percorso assoluto:

/usr/local/jdk/lib/classes.zip

Configurazione dei Client-host

Indipendentemente dal Sistema Operativo utilizzato, su ogni Client-host deve essere presente un browser Java 1.1 enabled. Tale browser deve essere configurato in modo da inviare le proprie richieste HTTP all'indirizzo IP che individua il Proxy-host.

Il progetto prevede che il Proxy inserisca su ogni pagina HTML proveniente da Internet l'applet di controllo prevista dal Proxy Module installato sul Proxy. Ne consegue che ogni browser riceve dal Proxy il file .class che contiene il codice dell'applet in questione. Dal momento che un'applet di controllo, così come accade per l'applicazione Proxy, necessita delle classi contenute nel package "proxy", il browser deve poter accedere a tali classi. Vi sono due modi tramite cui il browser può accedere a tali classi:

  1. Ricevere ogni classe (è un file .class) richiesto dall'applet dal Proxy stesso
  2. Avere a disposizione una copia locale del package "proxy", ovvero una copia installata direttamente su ogni Client-host.

Nel caso 1. non è richiesta alcuna particolare operazione di configurazione dei Client-host.

Nel caso 2. occorre installare anche sul/i Client-host il package "proxy", così come è stato descritto nel caso del Proxy-host (par. 3.2). In particolare bisogna prestare attenzione alla corretta impostazione del valore della variabile CLASSPATH in modo che il browser sia in grado di recuperare agevolmente i file .class dal package.

Supponendo di utilizzare come browser Netscape Communicator 4.05 su un sistema Unix e assumendo che il percorso assoluto del file java40.jar, contenente le classi usate dalla JVM del browser sia il seguente:

/usr/local/communicator405/java40.jar

può essere utile, per lanciare Communicator, definire il seguente Shell script:

CLASSPATH=/usr/local/communicator405/java40.jar:/export/home/marcomas/ export CLASSPATH /usr/local/communicator405/netscape &

Si è assunto che il package "proxy" sia stato installato all'interno della directory /export/home/marcomas/. Si noti che è importante il fatto che nel CLASSPATH compaia per primo il path delle classi di sistema usate da Communicator.

Configurazione di prova

Il progetto è stato testato utilizzando 2 host. Il Proxy-host è stato utilizzato anche come Client-host, così da avere a disposizione un totale di 2 Client-host.

Host                            Configurazione
Proxy-host 	
          CPU 	                SPARC
          Sistema Operativo 	Solaris
          Versione JDK 	1.1.5
Client-host 1 	
           CPU 	        SPARC
           Sistema Operativo 	Solaris
           Browser 	        Netscape Communicator 4.04 + Patch per AWT 1.1
                               (testato anche con Netscape Communicator 4.05)
Client-host 2 	
           CPU 	        Pentium
           Sistema Operativo 	Windows 95
           Browser 	        Netscape Communicator 4.04 + Patch per AWT 1.1


PROOF