From Agentgroup
Jump to: navigation, search
(Installazione dell'applicazione Proxy)
(Configurazione di prova)
 
(11 intermediate revisions by one other user not shown)
Line 214: Line 214:
 
Our first test is based on 2 host. The Proxy-host is used also as Client-host, to have 2 Client-hosts.
 
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
+
{| align=centre border=1
                Operating System     Solaris
+
| Host
                JDK Version         1.1.5
+
|
 
+
| configuration
Client-host 1 CPU             SPARC
+
|-
                Operating System     Solaris
+
| Proxy-host
                Browser       Netscape Communicator 4.04 + Patch for AWT 1.1
+
| CPU  
                                    (tested also with Netscape Communicator 4.05)
+
| SPARC
 
+
|-
Client-host 2 CPU             Pentium
+
|rowspan=2|
                Operating System     Windows 95
+
| Operating System
                Browser     Netscape Communicator 4.04 + Patch for AWT 1.1
+
|Solaris
 +
|-
 +
|JDK Version  
 +
|1.1.5
 +
|-
 +
|Client-host 1
 +
|CPU
 +
|SPARC
 +
|-
 +
|rowspan=2|
 +
|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
 +
|-
 +
|rowspan=2|
 +
|Operating System
 +
|Windows 95
 +
|-
 +
| Browser
 +
| Netscape Communicator 4.04 + Patch for AWT 1.1
 +
|}
  
 
===Italiano===
 
===Italiano===
Line 296: Line 321:
 
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:
 
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:
  
  1. 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.
+
*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.
  2. Copiare nella directory PROXY_APP_DIR i file che compongono il package "proxy" e che sono i seguenti:
+
*Copiare nella directory PROXY_APP_DIR i file che compongono il package "proxy" e che sono i seguenti:
  
  
  
       AppletMsg.class HTTPRequest.class
+
       AppletMsg.class               HTTPRequest.class
       AppletMsgBuffer.class HTTPResponse.class
+
       AppletMsgBuffer.class       HTTPResponse.class
       AppletMsgListener.class IllegalMethodCallException.class
+
       AppletMsgListener.class         IllegalMethodCallException.class
       AppletMsgProtocol.class InvalidFrameTagException.class
+
       AppletMsgProtocol.class       InvalidFrameTagException.class
       AppletMsgStatement.class MalformedAppletMsgException.class
+
       AppletMsgStatement.class       MalformedAppletMsgException.class
       AppletMsgSupport.class MimeContent.class
+
       AppletMsgSupport.class       MimeContent.class
       BadProxyModuleException.class ProxyEnvironment.class
+
       BadProxyModuleException.class   ProxyEnvironment.class
       BinaryContent.class ProxyService.class
+
       BinaryContent.class       ProxyService.class
       ControlAppletTag.class ProxyServiceMain.class
+
       ControlAppletTag.class         ProxyServiceMain.class
       EncodedUrlContent.class ProxyServiceMsgManager.class
+
       EncodedUrlContent.class       ProxyServiceMsgManager.class
       Frame.class TextContent.class
+
       Frame.class               TextContent.class
       FrameSet.class ThisProxy.class
+
       FrameSet.class                 ThisProxy.class
       HTMLParser.class UnexpectedFrameException.class
+
       HTMLParser.class               UnexpectedFrameException.class
       HTMLTag.class User.class
+
       HTMLTag.class               User.class
       HTTPConnection.class UserAlreadyLoggedException.class
+
       HTTPConnection.class       UserAlreadyLoggedException.class
       HTTPMessage.class URLFile.class
+
       HTTPMessage.class       URLFile.class
        UsersList.class
+
      UsersList.class
  
  
Line 327: Line 352:
  
 
       /export/home/marcomas/proxy
 
       /export/home/marcomas/proxy
  1.  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.
 
  
 +
*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.
  
  
3.3 Installazione di un Proxy Module sull'applicazione Proxy
+
 
 +
=====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:
 
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.
+
#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.
+
#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:
 
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
 
       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).
+
#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.
+
#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).
+
#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:
 
Nell'ambito della tesi sono stati realizzati due Proxy Module:
  
    * Cache Module;
+
*Cache Module;
    * SynchBrowsing 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:
 
In base a quanto detto e riprendendo l'esempio relativo al caso Unix, per installare il Cache Module, su un sistema occorre:
  
  1. Creare la directory CacheModule (il nome è ovviamente arbitrario), come sotto directory di
+
*Creare la directory CacheModule (il nome è ovviamente arbitrario), come sotto directory di
 
+
 
+
 
       /export/home/marcomas
 
       /export/home/marcomas
  2. Copiare nella directory CacheModule i seguenti file:
+
*Copiare nella directory CacheModule i seguenti file:
 
+
 
+
 
       RigaRegistro.class
 
       RigaRegistro.class
 
       CacheModule.class
 
       CacheModule.class
Line 369: Line 391:
 
       Riga.class
 
       Riga.class
 
       CacheFile.class
 
       CacheFile.class
  3. Copiare il file:
+
*Copiare il file:
 
+
 
+
 
       CacheApplet.class
 
       CacheApplet.class
 
+
nella directory  
      nella directory /export/home/marcomas
+
/export/home/marcomas
  4. Aggiungere /export/home/marcomas/CacheModule alla variabile di ambiente CLASSPATH.
+
*Aggiungere /export/home/marcomas/CacheModule alla variabile di ambiente CLASSPATH.
  5. Aggiungere una riga al file proxyconfig.txt la seguente riga:
+
*Aggiungere una riga al file proxyconfig.txt la seguente riga:
 
+
'''CacheModuleMain'''
CacheModuleMain
+
 
Per installare il SynchBrowsing Module è necessario procedere in modo del tutto analogo.
 
Per installare il SynchBrowsing Module è necessario procedere in modo del tutto analogo.
  
  1. Creare la directory SynchBrowsingModule (il nome è ovviamente arbitrario), come sotto directory di /export/home/marcomas.
+
*Creare la directory SynchBrowsingModule (il nome è ovviamente arbitrario), come sotto directory di /export/home/marcomas.
  2. Copiare nella directory SynchBrowsingModule i seguenti file:
+
*Copiare nella directory SynchBrowsingModule i seguenti file:
  
 
       SynchBrowsingWindow.class
 
       SynchBrowsingWindow.class
Line 389: Line 408:
 
       SynchBrowsingState.class
 
       SynchBrowsingState.class
 
       SynchBrowsingModule.class
 
       SynchBrowsingModule.class
 
+
*Copiare il file:
  3. Copiare il file:
+
 
+
 
       SynchBrowsingApplet.class
 
       SynchBrowsingApplet.class
 
+
nella directory  
      nella directory /export/home/marcomas
+
      /export/home/marcomas
 
        
 
        
  4. Aggiungere /export/home/marcomas/SynchBrowsingModule alla variabile di ambiente CLASSPATH.
+
*Aggiungere /export/home/marcomas/SynchBrowsingModule alla variabile di ambiente CLASSPATH.
  5. Aggiungere una riga al file proxyconfig.txt la seguente riga:
+
*Aggiungere una riga al file proxyconfig.txt la seguente riga:
  
 
SynchBrowsingModuleMain
 
SynchBrowsingModuleMain
Line 403: Line 420:
  
  
3.4 Esecuzione dell'applicazione Proxy
+
=====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:
 
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
+
'''java ProxyMain'''
  
 
Si ricordi infatti che ProxyMain.class è la classe di avvio dell'applicazione Proxy.
 
Si ricordi infatti che ProxyMain.class è la classe di avvio dell'applicazione Proxy.
Line 413: Line 430:
 
Per comodità, su un sistema Unix, può essere utile definire il seguente Shell script:
 
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:.
+
CLASSPATH=/usr/local/jdk/lib/classes.zip:/export/home/marcomas/:/export/home/marcomas/CacheModule:
export CLASSPATH
+
/export/home/marcomas/SynchBrowsingModule:.
cd /export/home/marcomas/ProxyMain
+
export CLASSPATH
java ProxyMain
+
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:
 
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
+
'''/usr/local/jdk/lib/classes.zip'''
  
# Configurazione dei Client-host
+
====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.
 
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.
Line 428: Line 446:
 
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:
 
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
+
#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.
+
#Avere a disposizione una copia locale del package "proxy", ovvero una copia installata direttamente su ogni Client-host.
  
Nel caso a) non è richiesta alcuna particolare operazione di configurazione dei Client-host.
+
Nel caso 1. non è richiesta alcuna particolare operazione di configurazione dei Client-host.
  
Nel caso b) 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.
+
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:
+
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
+
'''/usr/local/communicator405/java40.jar'''
  
 
può essere utile, per lanciare Communicator, definire il seguente Shell script:
 
può essere utile, per lanciare Communicator, definire il seguente Shell script:
Line 447: Line 465:
 
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.
 
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
+
====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.
 
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.
 +
 +
 +
{| align=centre border=1
 +
| Host
 +
|
 +
| configuration
 +
|-
 +
| Proxy-host
 +
| CPU
 +
| SPARC
 +
|-
 +
|rowspan=2|
 +
| Sistema Operativo
 +
|Solaris
 +
|-
 +
|Versione JDK
 +
|1.1.5
 +
|-
 +
|Client-host 1
 +
|CPU
 +
|SPARC
 +
|-
 +
|rowspan=2|
 +
|Sistema Operativo
 +
|Solaris
 +
|-
 +
|Browser
 +
|Netscape Communicator 4.04 + Patch for AWT 1.1(tested also with Netscape Communicator 4.05)
 +
|-
 +
|Client-host 2
 +
|CPU
 +
|Pentium
 +
|-
 +
|rowspan=2|
 +
|Sistema Operativo
 +
|Windows 95
 +
|-
 +
| Browser
 +
| Netscape Communicator 4.04 + Patch for AWT 1.1
 +
|}
 +
 +
[[PROOF|Back to PROOF]]
 +
 +
 +
''For information, please send a message to [mailto:giacomo.cabri@unimo.it giacomo.cabri@unimo.it]''

Latest revision as of 10:40, 30 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 configuration
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 for AWT 1.1(tested also with Netscape Communicator 4.05)
Client-host 2 CPU Pentium
Sistema Operativo Windows 95
Browser Netscape Communicator 4.04 + Patch for AWT 1.1

Back to PROOF


For information, please send a message to giacomo.cabri@unimo.it