Come configurare REC come HTTP Server (also available in english)


A volte puo' essere utile usare un web browser tipo Netscape come interfaccia utente di un programma. Una delle ragioni e' che non e' strettamente necessario implementare una interfaccia utente grafica complessa nel programma stesso, specialmente se il programma deve girare in ambienti con interfaccie utente diverse.

I web browser possono essere usati come front-end, ammesso che il programma possa generare pagine HTML, e che ci sia un modo per il browser di comunicare con il programma.

Un altro vantaggio e' che il programma puo' girare su una workstation remota, e il browser puo' girare su un PC collegato alla rete, o viceversa. Questo e' utile nel caso di decompilazioni particolarmente complesse, che richiedono piu' potenza di calcolo di quella disponibile sul sistema dell'utente.

Dalla versione 1.4, REC puo' agire come un generatore di pagine HTML.
In questa modalita' (attivata dalla opzione +html), REC legge i comandi dallo standard input, e produce una pagina HTML con il risultato di ciascun comando.

Un esempio di questa modalita' e' accessibile tramite la pagina del server di esempio on-line.

  Setup del server CGI

Per permettere a REC di comunicare con un web browser, e' necessario usare uno scritto CGI che agisca come server proxy che mantenga attiva la sessione di decompilazione. Il setup necessario e' mostrato nella figura seguente:

In questo setup, il web browser manda una richiesta al server HTTP. Il server HTTP esegue lo scritto CGI, che estrae il comando dalla richiesta, passa il comando al decompilatore, riceve la pagina HTML generata da REC, aggiunge alcune informazioni aggiuntive, e la passa al web browser, che la visualizza sullo schermo dell'utente,

Questo approccio richiede che l'utente sia abilitato a eseguire scritti CGI sul sistema server. Cio' non e' sempre possibile, o puo' richiedere un po' di assistenza dall'amministratore del sistema.

Se avete un sistema Linux, potete copiare il setup che uso sul mio sistema. Prima di tutto, dovete eseguire il server HTTP, che e' solitamente attivato con il comando 'httpd' (probabilmente dovere essere root per eseguire questo comando).

Il passo successivo e' il setup dello scritto CGI. Io ho sviluppato uno scritto CGI usando una delle librerie CGI disponibili pubblicamente. Potete scaricare i sorgenti del mio scritto CGI, e compilarli sul vostro sistema, digitando make. Quando avete l'eseguibile cgirec, dovete renderlo visibile al server HTTP. Sul mio sistema Linux, il server cerca l'eseguibile cgirec nella directory /home/cg/cgi-bin/. Se avete una configurazione diversa, potete creare un link simbolico alla locazione dove avete compilato l'eseguibile. Per esempio:

      ln -s /home/cg/cgi-bin/cgirec /var/lib/httpd/cgi-bin/cgirec
    
Quindi, dovete scrivere un file di configurazione per cgirec. Questo file di configurazione dice a cgirec dove trovare l'eseguibile da decompilare. Di nuovo, potete create dei link simbolici per rendere visibile a cgirec il file di configurazione. Potete anche guardare al file /tmp/proxy.trace per vedere i messaggi di trace prodotti dall'esecuzione di cgirec. Un file di configurazione e' cosi' formato:
	dir=/home/cg/recserv/
	cpu=i386,ex386
	cpu=ppc,exppc
	cpu=mc68k,ex68k
    

La linea dir= identifica la directory base contenente i file da decompilare.
Le linee cpu= identificano diverse sessioni. La prima parola e' l'argomento passato dal browser a cgirec. L'argomento e' usato per selezionare il nome della directory (la parola dopo la virgola), che contiene il programma da decompilare. cgirec si porta in quella directory (per esempio /home/cg/recserv/ex386) e fa partire una sessione di decompilazione, tramite il comando:

      rec +html example
    
Questo significa che il programma da decompilare deve essere chiamato example, e che un eseguibile chiamato rec deve essere presente in quella directory. Naturalmente, potete usare dei link simbolici per puntare alle locazioni che contengono i veri eseguibili.

Ovviamente potete cambiare i sorgenti di cgirec.c per adattarlo al vostro particolare ambiente (un port su Windows 95/NT sarebbe particolarmente apprezzato, se ci sono volontari ... :-)

E' possibile far partire sessioni multiple nella stessa directory. cgirec mantiene diversi canali di comunicazione per ogni sessione. Una sessione e' automaticamente terminata se il server non ha ricevuto comandi negli ultimi 20 minuti.


Copyright © 1998 - 2000 Backer Street Software -- Tutti i diritti riservati.

Ultima modifica 18 Nov. 1998

REC Home Page | REC User Manual