Web Analytics Made Easy - Statcounter


https://www.amazon.it/dp/B0CT9YL557

We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
a2 --- Gazie

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [violazione licenza] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 532.   Gazie

Gazie,(1) ovvero Gestione azienda, è un programma scritto in PHP, per la gestione di una contabilità, appoggiandosi a una base di dati MySQL.

Questo capitolo mostra in che modo mettere in funzione Gazie, versione 1.1.10, che in questa fase consente la gestione di una sola azienda, anche se con la partecipazione di più persone, con la possibilità per ognuna di definire le funzioni accessibili.

532.1   Verificare il funzionamento del servente HTTP con PHP

Gazie dipende dalla disponibilità di un servente HTTP, in grado di fare funzionare pagine contenenti codice PHP. Per verificare questa cosa si può realizzare un file molto semplice, da collocare dove il servente HTTP può poi mostrarlo:

<?php
phpinfo()
?>

Supponendo di avere chiamato questo file prova.php e di averlo collocato nella directory che corrisponde all'inizio della struttura offerta dal proprio servente HTTP, dovrebbe essere accessibile con l'indirizzo http://localhost/prova.php (naturalmente si suppone che il servente HTTP si trovi presso l'elaboratore locale). Se tutto funziona regolarmente si deve poter vedere una pagina di informazioni.

532.2   Predisporre MySQL

Per utilizzare Gazie è bene predisporre MySQL con una base di dati (di solito con il nome gazie) e un utente per il suo utilizzo (anche questo utente potrebbe avere il nome gazie).

Prima di poter fare questo è necessario che MySQL sia stato configurato in modo da poter funzionare. Questo significa che deve essere presente la base di dati amministrativa (mysql) e l'amministratore del DBMS (l'utente root) in grado di accedere.

Per creare la base di dati, si può procedere nel modo seguente, supponendo che il servente MySQL sia locale:

mysql -u root -p[Invio]

Enter password: digitazione_all'oscuro[Invio]

mysql>CREATE DATABASE gazie;[Invio]

Per creare l'utente gazie per il DBMS, si procede semplicemente così:

mysql>GRANT ALL ON gazie.* TO gazie@'%' \
  \IDENTIFIED BY 'segreta' WITH GRANT OPTION;
[Invio]

In questo modo, l'utente gazie può accedere da qualunque posizione; la parola d'ordine per il suo riconoscimento è segreta e può concedere dei privilegi ad altri utenti.

mysql>\q[Invio]

Una volta creato l'utente e la base di dati, è necessario inserire le tabelle di esempio fornite in forma di codice SQL. Si tratta di un file di testo che nel pacchetto originale di Gazie si trova nella directory doc/; nel caso della versione 1.1.10 è precisamente il file doc/gazie_prova_1.1.10.sql. Supponendo di disporre di questo file nella directory corrente, si procede nel modo seguente:

mysql -u gazie -p gazie < gazie_prova_1.1.10.sql[Invio]

Enter password: digitazione_all'oscuro[Invio]

In questo modo si avvia il programma mysql, in qualità di utente gazie per il DBMS, aprendo la base di dati gazie, fornendo i comandi contenuti nel file. Al termine dell'esecuzione dei comandi mysql termina di funzionare.

532.3   Installare Gazie

Gazie è un programma eseguito attraverso PHP, pertanto è indipendente dalla piattaforma, anche se è sviluppato tenendo come riferimento il servente HTTP Apache. Si può ottenere il pacchetto di Gazie da <http://gazie.sourceforge.net/>; nel caso della versione 1.1.10 si tratta del file gazie1.1.10.zip. Questo file va estratto nella directory che il servente HTTP mostra poi come directory principale; supponendo che nel file system questa sia /var/www/, si potrebbe procedere così:

cd /var/www[Invio]

unzip /root/gazie1.1.10.zip[Invio]

In questo caso si ottiene la directory gazie10/ che, attraverso un navigatore, può essere vista come http://localhost/gazie10/.

Prima di passare all'utilizzo del programma, è necessario modificare un file, per stabilire dove Gazie deve cercare la base di dati, che nominativo-utente e quale parola d'ordine deve usare per potervi accedere. Il file in questione è inc/config.php; segue l'estratto delle righe significative su cui intervenire, che appare conforme a quanto già descritto nelle sezioni precedenti: la base di dati è locale, si chiama gazie, come il nominativo dell'utente da usare, ma è necessario dichiarare anche la parola d'ordine.

$Host     = "localhost";
$Database = "gazie";
$User     = "gazie";
$Password = "segreta";

È importante osservare che la parola d'ordine per accedere alla base di dati appare in chiaro in questo file, inoltre il file deve essere accessibile in lettura al servente HTTP (oltre che ai programmi CGI, ammesso che ci sia differenza).

532.4   Verifica dell'accessibilità della base di dati

Nella sezione precedente appare la porzione saliente della configurazione di Gazie per l'accesso alla base di dati. Prima di tentare la verifica di funzionamento di Gazie, è bene controllare che la base di dati, secondo quei parametri di configurazione, sia accessibile effettivamente. Per esempio, l'utente gazie del DBMS potrebbe essere stato dichiarato con delle limitazioni; precisamente potrebbe essergli consentito di accedere soltanto dall'elaboratore locale (cosa che sarebbe anche consigliabile). Ma in tal caso, indicare l'elaboratore come localhost (come nell'esempio della sezione precedente), oppure 127.0.0.1, non è necessariamente la stessa cosa e in uno dei due modi potrebbe non essere possibile l'accesso.

Per togliersi ogni dubbio, meglio preparare un piccolo programma PHP che verifica l'accessibilità:

<?php
//
$Host     = "localhost";
$Database = "gazie";
$User     = "gazie";
$Password = "segreta";
//
$link = mysql_connect($Host, $User, $Password);
//
if ($link)
  {
    echo ("Connessione avvenuta con successo al DBMS. ");
    //
    if (mysql_select_db($Database, $link))
      {
        echo ("Apertura della base di dati riuscita ");
      }
    else
      {
        echo ("Impossibile connettersi alla base di dati! ");
      }
    //
    mysql_close($link);
  }
else
  {
    echo ('Connessione fallita! ');
    echo (mysql_error());
  }
?>

Supponendo di chiamare questo file test.php, se viene collocato nella directory principale offerta dal servente HTTP, dovrebbe essere raggiunto con l'indirizzo http://localhost/test.php e il messaggio che viene visualizzato dovrebbe essere abbastanza esplicito.

532.5   Avvio di Gazie

Una volta installato Gazie, dopo aver controllato che tutto quello che gli serve funzioni come dovrebbe, si utilizza il navigatore per accedere al file admin.php. Seguendo gli esempi già mostrati, l'indirizzo dovrebbe essere http://localhost/gazie10/admin.php.

Da questo punto il navigatore deve essere in grado di gestire e accettare i «biscottini» (cookie); inoltre deve eseguire codice JavaScript.

La pagina iniziale richiede l'inserimento di un nominativo e di una parola d'ordine. Si tratta di un utente specifico di Gazie, secondo quanto memorizzato nelle tabelle della sua base di dati.

Figura 532.4. Identificazione iniziale.

Gazie

Se la base di dati è stata ottenuta dal file di esempio, contenente codice SQL, come già descritto in un'altra sezione di questo capitolo, è presente l'utente amministratore, con la parola d'ordine password (esattamente come viene suggerito dalle voci tra parentesi, come si vede nella figura). Ovviamente, in una fase successiva, oltre ad aggiungere altri utenti, regolando le loro facoltà, conviene cambiare la parola d'ordine dell'utente di amministrazione, oltre che i suoi dati personali.

Figura 532.5. Pagina iniziale del programma: menù {Home}.

Gazie

Una volta superata la fase di autenticazione, si ottiene normalmente la pagina principale, che altrimenti si raggiunge selezionando la voce {Home} dal menù che appare in alto.

Figura 532.6. Guida per la compilazione delle schede a cui si accede dal menù {Archivi di base}.

Gazie

Successivamente, le schede più importanti da predisporre o da modificare, sono accessibili dalla voce {Archivi di base} del menù. Si ottiene una guida per la compilazione dei vari campi, quindi si può selezionare la tabella di proprio interesse per passare alla sua modifica. Si osservi che la voce attraverso cui si interviene sulle utenze di Gazie è {Utenti}.

532.6   Problemi con serventi HTTP speciali

Generalmente si dà per scontato che «il» servente HTTP sia Apache e non se ne considerano altri. Purtroppo, con Mathopd e forse con altri serventi veloci, ma essenziali, si crea un problema, dovuto a riferimenti interni al programma che sono inesatti.

In pratica, il file admin.php incorpora o richiama altri file, che a loro volta ne richiamano altri. Questo meccanismo di incorporazione o di richiamo dei vari file PHP, o dei fogli di stile, o di icone, o di altro ancora, può fallire. Ecco il genere di errori che si potrebbe ottenere:

Warning: main(/gazie10/inc/datlib.inc): failed to open stream: \
  \No such file or directory in /var/www/gazie10/admin.php on line 29 Warning: main(): Failed opening '/gazie10/inc/datlib.inc' for inclusion \
  \(include_path='.:/usr/share/pear') in /var/www/gazie10/admin.php on line 29 Warning: main(/gazie10/inc/funlib.inc): failed to open stream: \
  \No such file or directory in /var/www/gazie10/admin.php on line 30 Warning: main(): Failed opening '/gazie10/inc/funlib.inc' for inclusion \
  \(include_path='.:/usr/share/pear') in /var/www/gazie10/admin.php on line 30 Fatal error: Call to undefined function: checkadmin() in \
  \/var/www/gazie10/admin.php on line 31

La ragione di questo problema deriva dal fatto che il servente HTTP non fornisce valori appropriati per quello che nel linguaggio PHP può essere letto come $_SERVER['DOCUMENT_ROOT'].

A parte il problema che si crea a causa della mancanza dell'informazione richiesta da Gazie (document root), questo meccanismo, anche quando funziona correttamente, impedisce di installare Gazie in una posizione diversa da quella prevista. In pratica, Gazie va installato nella directory principale, dal punto di vista del servente HTTP; pertanto dovrebbe risultare accessibile da http://localhost/gazie*/, mentre posizioni diverse, come http://localhost/erp/gazie*/ o anche come http://localhost/~tizio/gazie*/, anche in condizioni «normali» non possono funzionare.

532.7   Modifiche da apportare

Per risolvere il problema dei riferimenti interni, tra i vari file di Gazie, bisogna intervenire pesantemente, stravolgendo la struttura del programma. Semplificando, i file che contengono codice PHP vanno spostati nella directory principale di Gazie, lasciando nelle sottodirectory la documentazione, le immagini, il codice JavaScript e i fogli di stile.

Qui viene mostrato come procedere per la versione 1.1.10. Inizialmente, la struttura di directory di Gazie è questa:

.
|--doc/
|--images/
|--inc/
|  `--font/
|--js/
|--modules/
|  |--acquis/
|  |--config/
|  |--contab/
|  |--finann/
|  |--inform/
|  |--magazz/
|  `--vendit/
|--style/
`--templates/

Dopo lo spostamento dei file PHP nella directory principale, le directory vuote vengono eliminate e la nuova struttura diventa quella seguente:

.
|--doc/
|--font/
|--images/
|--js/
`--style/

Si può osservare la comparsa della directory font/, che prima era contenuta in inc/, ora soppressa. Si osservi anche che tra i file contenuti nelle sottodirectory di modules/, possono esserci dei doppioni; in tal caso occorre verificare e decidere cosa scegliere.

Una volta fatta la ristrutturazione delle directory, occorre modificare quasi tutti i file che ora si trovano nella directory principale. Vengono mostrati degli esempi di modifiche da apportare, mettendo vicino ogni riga da cambiare con la propria riga modificata, per avere un'idea di ciò che si deve cercare:

include_once("../../inc/datlib.inc");
include_once("datlib.inc");
include_once($_SERVER['DOCUMENT_ROOT']."/".$nameradi."/inc/datlib.inc");
include_once("datlib.inc");
copy ($_FILES['userfile']['tmp_name'],"../../images/logo.jpg");
copy ($_FILES['userfile']['tmp_name'],"images/logo.jpg");
header("Location: ../../admin.php");
header("Location: admin.php");
if( file_exists ( "../../images/logo.jpg" )) {
if( file_exists ( "images/logo.jpg" )) {
<img src="<?php echo "http://".$_SERVER['HTTP_HOST']."/".$nameradi."/images/linux.gif"; ?>">
<img src="<?php echo "images/linux.gif"; ?>">
$this->gaz_path = '../../';
$this->gaz_path = '';
$this->Image('../../images/logo.jpg',10,20,50);
$this->Image('images/logo.jpg',10,20,50);
include("../../templates".DIRECTORY_SEPARATOR.$templates[$templateName].'.php');
include($templates[$templateName].'.php');
echo "| <a href=\"http://".$_SERVER['HTTP_HOST']."/".$nameradi.$path."\" ";
echo "| <a href=\"$path\" ";

Anche nella base di dati ci sono riferimenti a file PHP, pertanto anche lì occorre intervenire. In pratica, si modifica il sorgente SQL usato per creare le tabelle iniziali della base di dati. Ecco le righe originali da modificare, ridotte sulla destra per motivi tipografici:

INSERT INTO `gaz_module` VALUES (1, 'root', '/admin.php', 'Home page di GAZIE', 'Home', 3, 0);
INSERT INTO `gaz_module` VALUES (2, 'vendit', '/modules/vendit/docume_vendit.php', ...
INSERT INTO `gaz_module` VALUES (3, 'acquis', '/modules/acquis/docume_acquis.php', ...
INSERT INTO `gaz_module` VALUES (4, 'contab', '/modules/contab/docume_contab.php', ...
INSERT INTO `gaz_module` VALUES (5, 'magazz', '/modules/magazz/docume_magazz.php', ...
INSERT INTO `gaz_module` VALUES (6, 'finann', '/modules/finann/docume_finean.php', ...
INSERT INTO `gaz_module` VALUES (7, 'config', '/modules/config/docume_config.php', ...
INSERT INTO `gaz_module` VALUES (8, 'inform', '/modules/inform/docume_inform.php', ...

Ecco le stesse righe modificate:

INSERT INTO `gaz_module` VALUES (1, 'root', 'admin.php', 'Home page di GAZIE', 'Home', 3, 0);
INSERT INTO `gaz_module` VALUES (2, 'vendit', 'docume_vendit.php', ...
INSERT INTO `gaz_module` VALUES (3, 'acquis', 'docume_acquis.php', ...
INSERT INTO `gaz_module` VALUES (4, 'contab', 'docume_contab.php', ...
INSERT INTO `gaz_module` VALUES (5, 'magazz', 'docume_magazz.php', ...
INSERT INTO `gaz_module` VALUES (6, 'finann', 'docume_finean.php', ...
INSERT INTO `gaz_module` VALUES (7, 'config', 'docume_config.php', ...
INSERT INTO `gaz_module` VALUES (8, 'inform', 'docume_inform.php', ...

La modifica del file SQL è semplice, mentre quella dei file PHP è estremamente noiosa. Uno script potrebbe essere di aiuto. Quello che segue va eseguito essendo posizionati nella directory principale di Gazie, dopo l'estrazione dal suo archivio e risulta funzionante per la versione 1.1.10:

#!/bin/sh
#
replace () {
    #
    local NAME="$1"
    #
    if [ -f $NAME ]
    then
        cat $NAME \
            |  sed "s/\r$//g" \
            |  sed "s/^\r//g" \
            |  sed "s/\r/\n/g" \
            |  sed "s/include_once *(.*\/\([a-zA-Z0-9._]*\)[\"'] *)/include_once(\"\1\")/g" \
            |  sed "s/include *(.*\/\([a-zA-Z0-9._]*\)[\"'] *)/include(\"\1\")/g" \
            |  sed "s/include_once *(.*NomeDB.*)/include_once(\$NomeDB . \"\.lib\")/g" \
            |  sed "s/require_once *(.*\/\([a-zA-Z0-9._]*\)[\"'] *)/require_once(\"\1\")/g" \
            |  sed "s/header *(\"Location: *.*\/\([a-zA-Z0-9._]*\)[\"'] *)/header(\"Location: \1\")/g" \
            |  sed "s/http:\/\/.*\/js\//js\//g" \
            |  sed "s/http:\/\/.*\/style\//style\//g" \
            |  sed "s/http:\/\/.*\/images\//images\//g" \
            |  sed "s/http:\/\/.*\/templates\///g" \
            |  sed "s/http:\/\/.*\/modules\/[a-zA-Z0-9]*\///g" \
            |  sed "s/echo.*href.*http.*path.*;/echo \"\| <a href=\\\\\"\$path\\\\\" \";/g" \
            |  sed "s/define *(.FPDF_FONTPATH.*\/font\/*.)/define(\'FPDF_FONTPATH\', \'font\/\')/g" \
            |  sed "s/\.\.\/\.\.\/inc\///g" \
            |  sed "s/\.\.\/\.\.\/module\/[a-zA-Z0-9]*\///g" \
            |  sed "s/\.\.\/\.\.\///g" \
            |  sed "s/http:\/\/.*\/login_admin.php/login_admin.php/g" \
            |  sed "s/\"inc\"\.DIRECTORY_SEPARATOR\.//g" \
            |  sed "s/\"templates\"\.DIRECTORY_SEPARATOR\.//g" \
            > $NAME.new
        #
        if diff $NAME $NAME.new > "/dev/null" 2> "/dev/null"
        then
            #
            # Sono uguali.
            #
            rm -f $NAME.new
        else
            #
            # Sono diversi.
            #
            echo $NAME
            cp $NAME $NAME.old
            cp $NAME.new $NAME
        fi
    fi
}
#
#
#
mv -i modules/*/* .
rm -fr modules
#
mv -i inc/* .
rm -fr inc
#
mv -i templates/* .
rm -fr templates
#
#
#
for f in *
do
    replace $f
done

Purtroppo, i file PHP di Name hanno codici di interruzione di riga variegati: a volte viene usata la combinazione <CR><LF>; a volte solo <CR> e a volte solo <LF>. Lavorando con un sistema GNU, che di solito richiede che il codice sia <LF> soltanto, prima di trasformare i file, occorre uniformare il codici di interruzione di riga, come si vede nella funzione replace script, anche se la soluzione adottata non funziona molto bene:

        cat $NAME \
            |  sed "s/\r$//g" \
            |  sed "s/^\r//g" \
            |  sed "s/\r/\n/g" \
            ...

532.8   Installazione personale per ogni singolo utente

Se si riesce nella trasformazione descritta nella sezione precedente, Gazie può essere installato nella directory personale di ogni singolo utente, in modo da poter distinguere così, per ognuno, una propria base di dati.

Purtroppo, rimane il problema della parola d'ordine per accedere alla base di dati, che va scritta in chiaro nel file config.php.

Gli utenti, di solito, possono gestire le proprie pagine personali a partire dalla directory ~/public_html/; per usare Gazie da una sottodirectory di quella, è necessario che il servente HTTP ammetta l'esecuzione di programmi PHP dalle pagine personali degli utenti.

Fatto questo, occorre accertare con quali privilegi il servente HTTP accede ai file, ma soprattutto, quali privilegi vengono usati per eseguire i programmi CGI. Potrebbe trattarsi di un utente del tipo www-data o www-cgi. Sapendo questo, l'utente root può attribuire la proprietà del file config.php a quell'utente, togliendo i permessi di accesso al gruppo e agli altri utenti.

Quella descritta è la soluzione adottata nella distribuzione nanoLinux, ma bisogna considerare che in quel caso, è lo stesso sistema di creazione delle utenze a predisporre la base di dati, ma soprattutto il file config.php con i dati necessari, inclusa la parola d'ordine.

532.9   Riferimenti

Appunti di informatica libera 2006.01.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>, <daniele·giacomini (ad) poste·it>


1) Gazie   GNU GPL


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome gazie.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [violazione licenza] [translators] [docinfo] [indice analitico]

Valid ISO-HTML!

CSS validator!

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com