Database query

Manuale per il sistemista


Il dbquery e' una applicazione scritta in Perl per interfacciare i database di tipo Microsoft Access a un qualunque internet browser. Tramite il perl script dbquery.pl, opportunamente installato nella directory degli eseguibili 'cgi-bin' sul nodo che mantiene i database, gli utenti della rete possono fare interrogazioni e/o richieste di aggiornamento ai database.

Per l'uso consultare il  manuale per l'utente

Per installare il dbquery.pl fare riferimento alle seguenti istruzioni:
 


1) Prerequisiti


1.a) Hardware:


2) Installazione dei Database come system DB

Tutti i database da interfacciare al web devono essere definiti come system database.
Per fare questo su una macchina Windows NT 4.0 occorre: poi per ciascun database da interfacciare al web Questa operazione e' sufficiente per rendere disponibile al web il database, nel rispetto delle politiche di accesso definite (vedi paragrafo 4)


3) Installazione dello script dbquery.pl

Lo script dbquery.pl va installato nella directory cgi-bin (directory contenente gli script eseguibili attraverso un browser).
Lo script va aperto con un editor di testo per personalizzare le variabili contenute nelle prime righe di testo:

La prima riga deve contenere il path dell'eseguibile perl; tipicamente:

#!c:/perl/bin/perl.exe
#
........................

Le variabili (case sensitive) sono da definire secondo la sintassi di perl e sono qui sotto elencate con il corrispondente significato:
 
Variabile Significato
$domain Dominio della rete (scritto col punto iniziale) a cui appartiene il Database Server (ovvero il server su cui viene eseguito lo script dbquery.pl)
$DBServer Nome del nodo (inclusivo di dominio) del Database Server
$CGIfile E' il path della URL del CGI file (senza il nome del nodo)
$DB_batch_edit_dir Directory dei file temporanei.
In questa directory vengono temporaneamente conservate le richieste di aggiornamento al database fatte dagli utenti tramite browser su Allowed Hosts (vedi paragrafo 4)
$DB_log_file Path e nome del log file
$User_Help_Link URL dell'help file per gli utenti dbquery_user_help.html
$SMTP_SERVER Nome del nodo (inclusivo del dominio) che gestisce la posta con protocollo SMTP per il dominio
(tipicamente un relay basato su BSD sendmail)
$DSN_List Nome del database che contiene la lista dei database con le politiche di accesso; tipicamente DBlist (vedi paragrafo 4)
$Table_List Nome della tabella che contiene la lista dei database con le politiche di accesso; tipicamente Tablelist (vedi paragrafo 4)
$DefaultDSN Database di preferenza (quello che viene aperto per default tra quelli della lista in tabella)
$DefaultTable Tabella di preferenza (quella che viene aperta per default tra quelle della lista in tabella)
$DBmanagers Lista degli indirizzi e-mail dei root DB managers. Sono gli indirizzi e-mail a cui arrivano le notifiche di richieste di aggiornamento al database da parte degli utenti tramite gli Allowed Hosts(1)
$Root_Host_List Lista dei nodi che possono eseguire ogni operazione sul database piu' il batch edit (operazione che aggiorna il database secondo le richieste sottomesse dagli utenti tramite gli Allowed Hosts)(1)
$Trusted_Host_List Lista dei nodi che possono eseguire ogni operazione sul database (interrogazione e aggiornamento), batch edit escluso(1)
$Allowed_Host_List Lista dei nodi che possono eseguire interrogazioni al database e sottomettere le richieste di aggiornamento ai Trusted Hosts(1)
$Readonly_Host_List Lista dei nodi che possono eseguire soltanto interrogazioni al database(1)
$Denied_Host_List Lista dei nodi che non hanno alcun accesso al database(1)
$SUPPRESS_WARNING Se diverso da 0 (zero) sopprime i messaggi di errore dovuti alla mancata creazione e corretta personalizzazione delle tabelle aggiuntive dei database (vedi paragrafo 5)
$LOGLEVEL Livello di verbosita' del log nel log file specificato tramite la variabile $DB_log_file:
0 = non effettua nessun log
1 = effettua il log solo degli aggiornamenti al database
2 = effettua il log degli aggiornamenti e delle interrogazioni al database

(1)Queste definizioni rappresentano dei valori di deafult e vengono generalmente sovrascritte nelle definizioni relative ai singoli DB nel file dblist.mdb (vedi paragrafo 4)

Esempio di personalizzazione del file dbquery.pl :

#=====================================================================
#
$domain     = '.lnf.infn.it';

$DBServer   = 'dbserv.lnf.infn.it';
$CGIfile    = '/cgi-bin/dbquery.pl';
$DB_batch_edit_dir = '/databases/tmp/';
$DB_log_file = '/databases/log/dbquery.log';

$User_Help_Link = "http://$DBServer/dbquery_user_help.html";

$SMTP_SERVER = 'mailsrv.lnf.infn.it';

$DSN_List = "DBlist";
$Table_List = "Tablelist";

$DefaultDSN = "Agenda";
$DefaultTable = "PhoneBook";

$DBmanagers = 'DBManager@lnf.infn.it, Massimo.Pistoni@lnf.infn.it';
$Root_Host_List = 'pcianni,pcpistoni';
$Trusted_Host_List = 'pcangius,pcdebiase,macmartini';
$Allowed_Host_List = '*.lnf.infn.it';
$Readonly_Host_List = '';
$Denied_Host_List = '';

$SUPPRESS_WARNING = 0;
$LOGLEVEL = 2; # 0, 1 o 2 (0 = no log, 1 = update log, 2 = query and update log)
#
#=====================================================================
.................
 

Libreria cookie.lib

Lo script dbquery.pl fa uso di una libreria per la gestione dei cookie che non e' inclusa nella distribuzione standard di ActivePerl.
Affinche' lo script possa essere eseguito, occorre copiare il file cookie.lib nella subdirectory lib della directory in cui e' installato perl (tipicamente c:/perl/lib)

Test  del  dbquery.pl

Per testare la corretta installazione dello script aprire un internet browser e digitare la URL:

    http://<$DBServer>/<$CGIfile>

ad esempio:

    http://dbserv.lnf.infn.it/cgi-bin/dbquery.pl

oppure, per interfacciare un database specifico:

    http://dbserv.lnf.infn.it/cgi-bin/dbquery.pl?DSN=agenda&Table=PhoneBook
 


4) Creazione del Database con le politiche di accesso (DBlist)

E' conveniente creare un database che contenga la lista dei database da interfacciare al web. Questo database svolge essenzialmente due funzioni:
  1. Definisce la lista dei database che vengono interfacciati al web browser; tale lista viene espressamente esplicitata in una tabella nell'internet  browser dell'utente facilitando la scelta e la navigazione nei database da interrogare o da aggiornare.
  2. Definisce le politiche di accesso alle singole tabelle dei database che vengono interfacciati al web
Il nuovo database (tipicamente dblist.mdb) dovra' contenere una tabella (tipicamente Tablelist). Il disegno di questa tabella deve contenere i seguenti campi obbligatori:
 
Field Name Data Type Field Size Significato 
DSN Text >=50 Nome del system database
Table Text >=50 Nome della tabella del system database
Show Text >=3 Flag che indica se il database deve essere mostrato in tabella (indicare Y oppure YES) 
Mail Addresses Text >=250 Lista degli e-mail address dei DB managers di questa tabella. Sono gli indirizzi e-mail a cui arrivano le notifiche di richieste di aggiornamento alla Table di questo database da parte degli utenti tramite gli Allowed Hosts
Root Hosts Text >=250 Lista dei Root Hosts per questa tabella. Lista dei nodi che possono eseguire ogni operazione sulla Table di questo database compreso il batch edit (operazione che aggiorna il database secondo le richieste sottomesse dagli utenti tramite gli Allowed Hosts)
Trusted Hosts Text >=250 Lista dei Trusted Hosts per questa tabella. Lista dei nodi che possono eseguire ogni operazione sulla Table di questo database (interrogazione e aggiornamento), batch edit escluso.
Allowed Hosts Text >=250 Lista degli Allowed Hosts per questa tabella. Lista dei nodi che possono eseguire interrogazioni alla Table di questo database e sottomettere le richieste di aggiornamento ai Trusted Hosts
Readonly Hosts Text >=250 Lista dei Readonly hosts per questa tabella. Lista dei nodi che possono eseguire soltanto interrogazioni alla Table di questo database
Denied Hosts Text >=250 Lista dei Denied Hosts per questa tabella. Lista dei nodi che non hanno alcun accesso alla Table di questo database (Per default, in mancanza di parametri, e' vietato qualunque tipo di accesso)

Puo' essere conveniente aggiungere altri campi (non obbligatori) alla tabella Tablelist (quali  id, creation, update, requester, modifier e anche altri, i cui significati saranno descritti nel paragrafo 5.e.
Per ogni tabella di database da interfacciare al web aggiungere un record nella tabella Tablelist cosi' costruita; ad esempio, per una rubrica telefonica:
 
Field Name Field Value
DSN Agenda
Table Rubrica
Show Y
Mail Addresses Rosa.Ianni@lnf.infn.it,Massimo.Pistoni@lnf.infn.it
Root Hosts pcianni, pcpistoni
Trusted Hosts pccalcolo, maccalcolo
Allowed Hosts *.lnf.infn.it
Readonly Hosts *.infn.it,*.garr.it
Denied Hosts wwwcache.garr.it

Nel caso dell'esempio, la tabella Rubrica:

  1. puo' essere consultata da tutti i nodi interni ai domini dell' INFN e del GARR
  2. non puo' essere consultata dai nodi che usano il proxy cache server del garr wwwcache.garr.it
  3. puo' essere interrogata dai nodi nel dominio lnf.infn.it i quali possono fare richiesta di aggiornamento ai DBmanagers Rosa Ianni e Massimo Pistoni
  4. puo' essere interrogata e aggiornata dai nodi pccalcolo e maccalcolo
  5. puo' essere interrogata e aggiornata dai nodi pcianni e pcpistoni che provvederanno anche a soddisfare le richieste di aggiornamento fatte dai nodi del dominio lnf.infn.it previa verifica.
A seguito della creazione della tabella Tablelist nel database dblist.mdb contenente la lista dei database da servire sul web
attraverso lo script  dbquery.pl, occorre installare lo stesso database dblist.mdb come system database seguendo la procedura descritta al paragrafo 2 e attribuendo ad esso un Data Source Name (tipicamente DSN = DBlist, che deve coincidere comunque con il nome scelto nella variabile  DSN_List  dello script perl dbquery.pl).
A questo punto, richiamando la URL del dbquery.pl,  in testa all'internet browser comparira' una tabella HTML del tipo:
 
Databases DB 1 DB 2 DB ... DB n
Tables Table 1 Table 2 a Table 2... Table 2 m Table ... Table n a Table n b

nella quale, ad ogni record nella Tablelist del database DBlist, corrisponde un link ad una tabella di un database interfacciato al web (a condizione che sia impostata la flag corrispondente  Show = Y).


5) Personalizzazione dei database da interfacciare al web

Qualunque database installato come system database e' gia' automaticamente disponibile tramite browser per effettuare interrogazioni e aggiungere record. Tuttavia se si vogliono sfruttare a pieno le funzionalita' del dbquery.pl e' opportuno personalizzare i database da servire sul web.


5.a) Personalizzazione delle tabelle <Tablename>  interne al DSN:


6) Download

Il pacchetto  dbquery.zip  contiene i seguenti files:
 
 
dbquery.pl lo script in perl per interfacciare i database al web
dbquery_user_help.html manuale per l' utente
dbquery_installation.html manuale di installazione (questo documento)
cookie.lib libreria aggiuntiva da copiare nella subdirectory lib di perl
db_templates.zip file compresso contenente esempi di database correlati (DBlist, PhoneBook, Users, Groups, Usernames, Accounts, NetworkNodes, Contracts, Hardware


7) Conclusioni

Buona fortuna e buon lavoro.

Per ogni problema mandare un messaggio a:  Massimo.Pistoni@lnf.infn.it


Autore:  Massimo Pistoni Last update:  5 marzo 2001