Archivio di ant_prog


newsletter di Antonio - 1 (30th of September 2000)
saluti a tutti la mailing list di annunci e tips riprende, dopo un periodo di lungo silenzio. Sto mettendo a punto il mio sito web, dove saranno archiviati automaticamente tutti i messaggi di questa newsletter (a partire da questo). http://monitor.deis.unical/ant/it/ Tra le novità: il tutorial su wget, l'utility GNU per fare il mirroring di interi siti. La versione HTML non è ancora finita, ma quella solo testo sì e potete scaricarla da qui: http://monitor.deis.unical.it/ant/it/linux/wgettut/ Inoltre ho un mirror delle LDR (Linux Domande e Risposte) aggiornato automaticamente ogni Lunedì mattina e una nutrita collezione di Link tramite menù JavaScript che potete anche scaricare e usare come punto di partenza per le vostre navigazioni. Poichê lavoro a Milano il mio tempo libero si è ridotto ma durante il servizio civile tornerò in Calabria e scriverò nuovi tutorial e finirò lo sviluppo del compilatore KISS (il mio linguaggio di programmazione). buona giornata a tutti -- Antonio Bonifati _-C tip-_ --------- con la typedef potete creare anche un sinonimo per il tipo array. Ad es. typedef char STR[255]; dopodiche' la scrittura: STR s; equivale a char s[255]; Potete poi ovviamente combinare i sinonimi cosi' definiti con altri attributi nella definizione di nuovi tipi piu' complessi. Es. STR *sp; // String Pointer (infatti e' un puntatore a stringa) equivale a char (*sp)[255]; (ossia e' un puntatore ad un array di 255 caratteri, vale a dire un puntatore ad una stringa (STR)) Notate bene che STR *sp; NON equivale a char *sp[255]; che e' tutt'altra cosa (un vettore di 255 puntatori a carattere). Infatti char *sp[255], che sarebbe meglio chiamare apc (Array of Pointers to Char = Array di Puntatori a Carattere), si interpreta cosi': char *(sp[255]); Questo perche' il dichiaratore [] ha precedenza maggiore di *. Riferimenti: - "Linguaggio C" di Kernighan&Ritchie 2a ed. italiana pag. 64, 155 - "Dal C a Windows (passando per C++)" di Simonelli&Munisso pag. 57

newsletter di Antonio - 2 (10th of October 2000)
>io sono un giovane programmatore, e da poco tempo sto' immergendomi
>nel liguaggio Java. Andando nel sito javascript.it ho visto il Suo script 
>matematico. Vorrei farLe cortesemente una domanda...io dovendo 
>realizzare un modulo ordini voglio far in modo che il visitatore 
>cliccando sul prodotto scelto, quindi mettendo una quantitÇ da lui 
>desiderata, vorrei che il mio script faccia automaticamente il calcolo 
>dell'intero ordine. Quindi chiedo a Lei un Cortese aiuto come 
>realizzarlo.

Ecco un modo semplice di realizzarlo, che potrai facilmente
adattare alle tue esigenze.

saluti
Antonio
http://king.rett.polimi.it/~ant/

shop Form

itempricequantitytotal
item1 $5
item2 $7
item3 $25
item4 $80
total order
<HTML><HEAD>
 <TITLE>shop Form</TITLE>
 <SCRIPT Language="JavaScript">

  function update() {
    var total=0;
    with (document) {
     if (shopForm.item1.checked) {
	total+=subtotal=5*shopForm.quantity1.value;
	shopForm.total1.value="$" + subtotal;
     }
     if (shopForm.item2.checked) {
	total+=subtotal=7*shopForm.quantity2.value;
	shopForm.total2.value="$" + subtotal;
     }
     if (shopForm.item3.checked) {
	total+=subtotal=25*shopForm.quantity3.value;
	shopForm.total3.value="$" + subtotal;
     }
     if (shopForm.item4.checked) {
	total+=subtotal=80*shopForm.quantity4.value;
	shopForm.total4.value="$" + subtotal;
     }
     shopForm.total.value="$"+total;
    }
  }

 </SCRIPT>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
 <H2>shop Form</H2>
 <!-- oppure ACTION="serverURL" che specifica un'applicazione CGI sul server -->
 <FORM NAME=shopForm ACTION="mailto:address@mail.com" METHOD=POST>
  <TABLE CELLSPACING=0>
  <TR BGCOLOR=aqua>
   <TH>item<TH>price<TH>quantity<TH>total
  </TR>
  <TR BGCOLOR=beige>
   <TD><INPUT TYPE=CHECKBOX NAME=item1 VALUE=yes OnClick='update()'>item1
   <TD>$5
   <TD><INPUT TYPE=TEXT SIZE=4 NAME=quantity1 VALUE=1
	OnChange='update()'>
   <TD><INPUT TYPE=TEXT SIZE=10 NAME=total1>
  </TR>
  <TR BGCOLOR=bisque>
   <TD><INPUT TYPE=CHECKBOX NAME=item2 VALUE=yes OnClick='update()'>item2
   <TD>$7
   <TD><INPUT TYPE=TEXT SIZE=4 NAME=quantity2 VALUE=1
	OnChange='update()'>
   <TD><INPUT TYPE=TEXT SIZE=10 NAME=total2>
  </TR>
  <TR BGCOLOR=beige>
   <TD><INPUT TYPE=CHECKBOX NAME=item3 VALUE=yes OnClick='update()'>item3
   <TD>$25
   <TD><INPUT TYPE=TEXT SIZE=4 NAME=quantity3 VALUE=1
	OnChange='update()'>
   <TD><INPUT TYPE=TEXT SIZE=10 NAME=total3>
  </TR>
  <TR BGCOLOR=bisque>
   <TD><INPUT TYPE=CHECKBOX NAME=item4 VALUE=yes OnClick='update()'>item4
   <TD>$80
   <TD><INPUT TYPE=TEXT SIZE=4 NAME=quantity4 VALUE=1
	OnChange='update()'>
  <TD><INPUT TYPE=TEXT SIZE=10 NAME=total4>
  </TR>
  <TR BGCOLOR=aqua>
   <TD COLSPAN=2 ALIGN=CENTER><INPUT TYPE=SUBMIT VALUE="ORDER">
   <TH>total order<TD><INPUT TYPE=TEXT SIZE=10 NAME=total>
  </TR>
  </TABLE>
 </FORM>
</BODY>
</HTML>

newsletter di Antonio - 3 (1th of January 2001)
<Ant Programming Newsletter>

Auguro buone feste a tutti. Le novità di questa newletter interamente
dedicata a Linux e al C sono:

* una nuova rubrica intitolata "Unix tip" alla fine di ogni newsletter
  tratterà trucchi e curiosità spesso poco note ai principianti,
  applicabili ai sistemi operativi di tipo Unix, tra cui Linux.
* due nuovi programmini in C: un generatore di numeri casuali e il
  famoso hangman game, comprensivo di un tutorial in cui spiego come
  ho sviluppato il programma e introduco all'uso della libreria
  ncurses:
        http://king.rett.polimi.it/~ant/C
* introduzione a GNU Make, liberamente tradotta dalla documentazione
  del medesimo:
        http://king.rett.polimi.it/~ant/C/make.txt.gz

subscribe: dalla mia homepage http://king.rett.polimi.it/~ant
unsubscribe: scrivi una e-mail a <antonio.b@infinito.it>

-- Antonio Bonifati - aka ninuzzo


** Unix tip **
xx Redirezione di stderr xx

La redirezione dello standard input si fa con <, quella dello standard
output con >. E quella dello standard error? Con 2>. La ragione di
quel 2 è dovuta al fatto che la shell prima di aprire un programma
apre lo standard input, lo standard output e lo standard error
assegnandogli rispettivamente sempre i descrittori di file numero
0,1,2. Difatti si ha quindi la seguente equivalenza:

<       0<
>       1>
>>      1>>
        2>
        2>>

la prima colonna presenta il simbolo di redizione abbreviato, la
seconda quello esteso corrispondente. Ad es. scrivere:

cat < file

equivale a:

cat 0< file

Maggiori informazioni sulla redirezione da riga di comando si trovano
nella manpage di bash (man bash), sezione REDIRECTION.

newsletter di Antonio - 4 (11th of January 2001)
Sono lieto di presentarvi un vero e proprio corso di PHP in italiano e gratuito: dall'installazione (Apache + PHP con GD + MySQL/mSQL) all'utilizzo del linguaggio. Tra gli argomenti affrontati: variabili, tipi, operatori, strutture di controllo, manipolazione delle stringhe, uso degli hash, uso delle funzioni, accesso a file, programmazione ad oggetti. Vengono inoltre illustrate le API verso i database server mSQL e MySQL e la generazione di immagini dinamiche con la libreria GD. Numerosi gli esempi di codice, tra cui lo sviluppo del programma bookmarksDB, un database di bookmarks organizzati in forma gerarchica, consultabile e amministrabile via web fornito sia nella versione che usa mSQL che in quella per MySQL. download a: http://king.rett.polimi.it/~ant/php per accontentare un paio di voi, ho reso la mia collezione di bookmark più facilmente navigabile usando gli script del tutorial: http://king.rett.polimi.it/~ant/links per una lista di tutti i bookmark, che potete salvarvi facilmente cliccate su "Expand all". link consigliati: http://www.SuperAlberT.it ottimi script in php! http://www.lyx.org LyX Home Page, ossia chi ha pi· bisogno diMS Word? ** Unix tip ** xx Redirezione dell'output multipla xx Ci sono dei casi in cui vorreste che l'output di un programma venga salvato come file su disco. In questo caso basta usare la redirezione dell'output con >. Ma se volete che contemporaneamente venga anche visualizzato? La soluzione piè pratica è usare la piccola utility `tee', la quale riporta lo standard input sullo standard output esattamente come fa `cat' senza argomenti, ma inoltre salva lo standard input sul file specificato come argomento. Di solito si usa in questo modo: comando | tee nomefile In questo caso l'output di un comando viene visualizzato a video e inoltre salvato nel file specificato. |||||||| Antonio Bonifati -- fine newsletter * subscribe: dalla mia homepage http://king.rett.polimi.it/~ant ricordo ai nuovi iscritti che qui potete trovare l'archivio delle mail. * unsubscribe: scrivi una e-mail a finora nessuno s'è voluto deiscrivere ;)

newsletter di Antonio - 5 (19th of January 2001)
ciao a tutti, vi segnalo due novità sul sito e poi la consueta rubrica "Unix tip". * php-msql-admin ovvero una serie di script per amministrare via web database di mSQL in locale o remoto, più comodo del monitor di msql. http://king.rett.polimi.it/~ant/dw/php-msql-admin/ * info-tut, una introduzione ad info della GNU http://king.rett.polimi.it/~ant/linux/info-tut/ sito consigliato http://mrshark.sourceforge.net/ qui potete trovare il quick&easy configuration howto su Linux ** Unix tip ** xx Visualizzare uno script di cui non si ricorda il percorso xx Supponete di voler dare un'occhiata ad uno script, perchè forse pensate di doverlo modificare, ad es. allo script startx e di non ricordarvi il percorso in cui è memorizzato. Potete allora fare: $ which startx /usr/X11R6/bin/startx $ less /usr/X11R6/bin/startx ma è più veloce combinare i due comandi in uno con le backtick: $ less `which startx` Un backtick (apice rovesciato) si ottiene di solito con '. Notare che less visualizzerà sull'ultima linea il percorso del file. Se ne avete i permessi e volete editare il file, basta premere v dentro less e verrà così aperto vi su quel file. All'uscita tornerete a less. Per customizzare l'editor da usare riferitevi a: man less. Antonio Bonifati http://king.rett.polimi.it/~ant _________________________________________________ questa e-mail è stata spedita poichè sei iscritto alla newsletter di Antonio e non ha alcuno scopo commerciale o pubblicitario. Se non desideri più riceverla scrivi a <antonio.bonifati@libero.it>.

newsletter di Antonio - 6 (01st of April 2001)
In questa puntata: altri tutorial su PHP, gtk, Prolog, i permessi di Unix, socket di Internet, la lan casalinga (parte 1). ----------------------------- Novità del sito: * Grafici in HTML con PHP. Imparate come implementare dei questionari con grafico di statistica come quelli che vanno di moda su molti portali (es. www.libero.it). http://king.rett.polimi.it/~ant/php/html_graphs/ http://king.rett.polimi.it/~ant/php/phpgraph-tut.tar.gz [28k] * Debugging con PHP: due funzioni utili. PHP ha due funzioni molto semplici da usare in grado di rappresentare strutture dati complesse a scopo di debugging. http://king.rett.polimi.it/~ant/php/php_deb.shtml * Le maschere dei principali motori di ricerca tutte in una pagina. http://king.rett.polimi.it/~ant/varie/motori/ * Permessi sui file e sulle directory, utenti, gruppi ed umask: una spiegazione in "plain italian" http://king.rett.polimi.it/~ant/linux/permessi.txt ----------------------------- Siti consigliati: * http://www.gtk.org Imparate ad usare "the GIMP Toolkit", una libreria LGPL per creare interfacce grafiche portabili dall'ambiente Unix a quello Windows. Davvero ben fatto il tutorial: http://www.gtk.org/tutorial/ * http://www.ecst.csuchico.edu/~beej/guide/net/ Beej's Guide to Network Programming. Come usare i socket di Internet e scrivere programmi in C per comunicare in rete. * http://www.amzi.com Qui potete scaricare "Adventure in Prolog", un ottimo libro introduttivo sul linguaggio Prolog o la IDE "Amzi! Logic Explorer" freeware, per Windows (che include "Adventure in Prolog"): http://www.amzi.com/articles/prolog_books_tutorials.htm I pinguini senza emulatore windows possono usare: GNU Prolog http://www.gnu.org/software/prolog SWI-Prolog http://www.swi.psy.uva.nl/usr/jan/SWI-Prolog.html La vostra distribuzione potrebbe già averli sotto forma di pacchetti (Mandrake ha entrambi gli rpm). ----------------------------- Linux tip * LAN "casalinga" tra due PC Avete due PC a casa, magari un vecchio 486 che se ne sta in un angolo inutilizzato? Con poca spesa e il sistema operativo più facile da usare (cioè Linux, ovviamente) potete divertirvi col networking ed imparare molte cose sulla configurazione di un server. Ecco come ho fatto io. Ho due PC: * 486-DX2S 66 Mhz, 8 MB di RAM, HD 425M, s.o. MuLinux-11r9 clonato su HD se vuoi mandarmi delle vecchie SIMM da almeno 8 MB ti sarò eternamente grato :) tutto su MuLinux qui: http://mulinux.nevalabs.org * Pentium II 333 Mhz, 64 MB di RAM, HD 5.1 GB, s.o. Mandrake Linux 7.2 Ho comprato: * scheda Ethernet 10 Mbps ISA combo (compatibile NE 2000) (cioè sia col connettore BNC che RJ45) (L. 23,000) * scheda Ethernet 10 Mbps PCI combo (compatibile NE 2000) (L. 25,000) * cavo cross-over 15m (L. 15,000) Comprato e fatto costruire da un negozio di materiale elettrico. Questo cavo serve per connettere due soli PC senza usare l'hub. In alternativa potete usare un cavo coassiale, se le due schede hanno il connettore BNC. Se avete n PC (n>2) comprate un hub da n porte ed usate cavi dritti anziché cross-over. Lo schema del cross-over lo trovate su: http://www.twistedpair.net/FAQ/cable.asp oppure: http://www.nullmodem.com/10BaseT-Crossover.htm I fili da collegare sono soltanto 4 per costruire un cross-over 10BaseT (categoria 3, UTP) in grado di operare con schede da 10 Mbps, tuttavia ho preferito acquistare un cavo 100BaseT ad 8 fili (categoria 5) e collegarli tutti in modo da costruire un cross-over 100BaseT, che funziona anche come cross-over 10BaseT (i 4 fili in più collegati non vengono utilizzati in questo caso). Se dovete costruire molti di questi cavi considerate l'acquisto dell'apposita pinza crimp. In totale ho speso solo L. 63,000! Ho montato le schede, collegato il cavo, installati i due sistemi operativi e fatto il boot di entrambi. Poi su ciascuno ho caricato il modulo del kernel driver per la scheda di rete, ho assegnato a ciascuno un indirizzo IP di quelli che non sono utilizzati su Internet e infine ho provato a pingare. Tutto ok! Sul 486 (con mulinux): # setup -m net/ne io=0x300H # ifconfig eth0 192.168.1.2 # route add -net 192.168.1.0 eth0 Sul Pentium II (con Mandrake Linux): # modprobe ne2k-pci # ifconfig eth0 192.168.1.1 Per testare la connessione con ping: Sul486: # ping 192.168.1.1 Sul Pentium II: # ping 192.168.1.2 Assegnate dei nomi di fantasia ai due PC. Nel mio caso: 486: hog Pentium II: ninuzzo Dopo la prova iniziale, per rendere permanenti le impostazioni di rete e avviare l'interfaccia all'avvio della macchina, ho usato draknet con la Mandrake e poi ho aggiunto ne2k-pci al file /etc/modules. Su mulinux ho usato setup. In entrambi i casi ho scelto il nome di dominio di fantasia myhome.it. Ho poi inserito nel file /etc/hosts del Pentium la linea: 192.168.1.2 hog.myhome.it hog Ho poi attivato il server inetd sul Pentium II (con drakxservices) ed installato il pacchetto telnet-server e dipendenti. In questo modo posso fare telnet da hog a ninuzzo: # telnet 192.168.1.1 Per semplicità ho inserito in hog:/etc/hosts la linea: 192.168.1.1 ninuzzo.myhome.it ninuzzo così mi basta fare "telnet ninuzzo". Tuttavia quando sono collegato ad internet non gradisco che qualche malintenzionato possa telnettare la mia macchina, anche perché ho un account a cui si può accedere usando solo il nome utente senza fornire alcuna password per comodità. Per restringere l'accesso solamente alla rete 192.168.1.0 ho inserito nel file /etc/hosts.deny la linea: ALL: ALL per rifiutare tutti i servizi (il primo ALL) a tutti gli host (il secondo ALL) per default e poi nel file /etc/hosts.allow ho inserito la linea: ALL: 127.0.0. 192.168.1. per maggiori informazioni: man 5 hosts_access. Ho attivato il server telnet "rustico" di mulinux su hog per collegarmi in telnet da ninuzzo ad hog. Ho poi installato wu-ftpd su ninuzzo in modo che posso trasferire file da hog (client) a ninuzzo (server). ...continua alla prossima ----------------------------- Info sulla newsletter: Gli iscritti sono 58. Per deiscriversi "drop me a line", non l'ho automatizzato perché ancora nessuno ha voluto farlo! :) = Antonio Bonifati = si occupa di web-scripting = e gestione basi di dati = su sistemi Unix/Linux = lavora anche a distanza = antonio.bonifati@libero.it

newsletter di Antonio - 7 (25th of April 2001)
In questa puntata: ancora sulla LAN casalinga (IP Masquerading) e sul linguaggio C. Per chi ha perso le puntate precedenti ricordo che l'archivio della newsletter è qui: http://king.rett.polimi.it/~ant/php_libs/mail_archives/ant_prog.html Purtroppo una legge assurda sull'editoria, voluta dalle lobby del settore, e votata a favore da entrambi i poli minaccia la libertà di espressione sul web (e non solo sul web). E' una cosa di cui a mio parere non avevamo proprio bisogno. Non fatevi mettere i legacci senza fiatare. Firmate via email la petizione contro: http://www.punto-informatico.it/petizione.asp Maggiori informazioni qui: http://punto-informatico.it/p.asp?i=35705 == Antonio http://king.rett.polimi.it/~ant ----------------------------- News * E' uscita Mandrake 8.0 Una delle distribuzioni in assoluto più facili per i pinguini newbie. Tra le novità il nuovo kernel 2.4.3, KDE 2.1.1 e GNOME 1.4 e l'amministrazione di sistema resa facile dal nuovo Mandrake Control Center. Giochi inclusi ;) http://www.linux-mandrake.com/it/ ----------------------------- C * The International Obfuscated C Code Contest (http://www.ioccc.org/) E' ancora presto per partecipare alla 16a edizione, ma intanto potete trovare i codici offuscati di quelli che hanno vinto la precedente edizione. * Tabella delle precedenze ed associatività degli operatori in C Utile per principianti ed esperti: http://king.rett.polimi.it/~ant/C/opprec/ * Beej's Guide to Unix Interprocess Communication Potete scaricarla per visione offline dal mio sito [172k]: http://king.rett.polimi.it/~ant/C/beej_guide_ipc.tar.gz La homepage di Beej è: http://www.ecst.csuchico.edu/~beej/ * Unix Programming Frequently Asked Questions http://www.erlenstar.demon.co.uk/unix/faq_toc.html ----------------------------- Programmi consigliati: * Yahoo! Messenger for Unix http://uk.messenger.yahoo.com/download/unix.html * XBill http://www.xbill.org/ In questo gioco sei un amministratore di sistema e qualcuno sta tentando di distruggere i tuoi computer infettandoli con Wingdows [TM],un virus mascherato da sistema operativo... Scaricate i sorgenti in C++ e compilateli ...e divertitevi ;) ----------------------------- Linux tip * LAN "casalinga" tra due PC (parte 2) In questa puntata vediamo come configurare il routing della vostra LAN casalinga a Internet, utilizzando un computer Linux Mandrake come router. Quest'ultimo ha una interfaccia di rete sulla LAN (eth0) e un'altra su linea commutata (connessione PPP a Internet tramite modem), che suppongo siano state correttamente configurate (per la eth0, vedi parte 1 nell'archivio di questa newletter). I client (che nel mio caso sono solo 1, il mio vecchio 486) hanno un indirizzo statico privato. Imposteremo su questi client una route di default, che indirizza le richieste verso tutti gli indirizzi diversi da quelli della rete 192.168.1.0 verso il router. In pratica tutti i pacchetti inviati dal client hog su internet passeranno attraverso il router ninuzzo che a sua volta li maschera e li invierà all'interfaccia ppp0. I pacchetti provenienti da hog e diretti verso internet devono essere mascherati dal router (IP Masquerading), perché i client utilizzano indirizzi IP privati. In questo modo i pacchetti appaiono ad internet come se provenissero dal router che li inoltra. Più precisamente il numero di porta sorgente e l'indirizzo IP sorgente vengono cambiati dal router con valori propri. Viceversa quando arriva da Internet un pacchetto indirizzato al router su quella porta del router assegnata per uso del client, il router ci rimette l'IP e il numero di porta del client e instrada il pacchetto al client sulla LAN. Oltre alla route di default sull'interfaccia eth0, sul client bisogna indicare gli indirizzi DNS del proprio ISP (infostrada nel mio caso), in modo che esso possa risolvere i nomi che richiede su internet in indirizzi IP. Vediamo prima la configurazione del router (ninuzzo): installate il pacchetto ipchains che è necessario per inoltrare IP, cioè per svolgere le funzioni dell'IP Masquerading: # rpm -ivh ipchains-1.3.9-8mdk.i586.rpm Modificate il file /etc/sysconfig/network, cambiando la linea: FORWARD_IPV4=false con FORWARD_IPV4=true e aggiungendo alla fine: GATEWAYDEV=ppp0 Riavviate la rete per abilitare il forwarding dei pacchetti: # /etc/init.d/network restart Shutting down interface eth0: [ OK ] Setting network parameters: [ OK ] Bringing up interface lo: [ OK ] Enabling IPv4 packet forwarding [ OK ] Bringing up interface eth0: [ OK ] Come potete vedere non occorre riavviare il computer (ehi, qui siamo in Linux, mica in Windows). Per essere sicuri controllare che questo file contenga 1 e non 0: # cat /proc/sys/net/ipv4/ip_forward 1 Defininamo adesso quali indirizzi devono essere mascherati edinoltrati: per semplicità stabiliamo che tutti i computer della LAN con il numero di rete 192.168.1.0 sono accettati per inoltrare e mascherare messaggi, a tutti gli altri l'inoltro è negato per default: # ipchains -P forward DENY # ipchains -A forward -s 192.168.1.0/255.255.255.0 -j MASQ Controllate che l'inoltro sia stato impostato con la mascheratura facendo: # cat /proc/net/ip_fwchains forward C0A80100/FFFFFF00->00000000/00000000 - 10 0 0 0 0 0 0 0-65535 0-65535 AFF X00 00000000 0 0 MASQ Ecco adesso la configurazione del client (hog): potete farla anche telnettando su hog da ninuzzo, se vi scoccia muovervi per andare alla consolle di hog ;) controllate che /etc/host.conf sia così: order hosts, bind multi on in questo modo hog prima cerca di risolvere i nomi consultando /etc/hosts e poi ricorrre ai DNS di libero in caso non li trova in /etc/hosts. Inserite gli indirizzi IP dei nameserver in /etc/resolv.conf: domain myhome.it nameserver 193.70.152.25 nameserver 193.70.192.25 basta fare: # echo -e "nameserver 193.70.152.25\nnameserver 193.70.192.25">>/etc/resolv.conf Quindi aggiungiamo la route di default: # route add default gw 192.168.1.1 eth0 controlliamo la tavola di routing: # route Kernel routing table Destination Gateway Genmask Flags MSS Window Use Iface localnet * 255.255.255.0 U 1500 0 2 eth0 loopback * 255.0.0.0 U 3584 0 0 lo default ninuzzo.myhome. * UG 1500 0 0 eth0 Bene, bene, adesso su ninuzzo collegatevi ad Internet. Poi andate su hog (o tramite telnet) e provate a pingare un indirizzo su internet, un host che sapete che è sù, ad es. quello di king.rett.polimi.it (131.175.6.73): ping -c 10 131.175.6.73 e ping -c 10 king.rett.polimi.it oppure provate col microbrowser quark di MuLinux a navigare in qualche sito. Per rendere permanenti le impostazioni: su ninuzzo basta che date il comando: # /etc/init.d/ipchains save e attivate il servizio ipchains allo startup con drakxservices. mentre su hog (dove è installato mulinux) usate setup scegliete di configurare la rete (network) e rispondete alle varie domande, tra cui settare il GATEWAY di default che è ninuzzo (192.168.1.1) e il DNS del vostro ISP. Ricordatevi di salvare questo profilo di configurazione. Nota: su Linux Mandrake esiste un programma (drakgw) molto facile da usare per configurare la condivisione della connessione ad internet. Tuttavia ho voluto mostrare la procedura manuale per poter capire meglio quello che avviene. Se dai client collegati ad Internet tramite l'IP Masquerading volete connettervi a siti FTP, sul server dovete caricare il modulo ip_masq_ftp col comando: # modprobe ip_masq_ftp Similmente per IRC: # insmod ip_masq_irc Potete automatizzare la cosa inserendo nel file /etc/rc.d/rc.local: /sbin/depmod -a /sbin/modprobe ip_masq_ftp.o ________________________________________ | Nella prossima puntata: | Configurazione di un server proxy

newsletter di Antonio - 8 (31st of July 2001)
In questa puntata: LOAF: un Linux da taschino per uso client, FreeBSD, lan casalinga (3): server proxy. "if you want to be nice" vota il Politecnico di Milano (http://www.polimi.it) (che gentilmente fa gratis l'hosting del mio sito) su http://sole.ilsole24ore.com/premiowww/voto.html nella categoria "scuole ed università". buone vacanze per chi è fortunato di andarci ;) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .-. Antonio Bonifati alias ninuzzo /v\ http://king.rett.polimi.it/~ant /( )\ powered by Linux ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ----------------------------- Siti consigliati * http://lwn.net/Gallery/ Una divertente galleria fotografica del pinguino Tux a spasso per il mondo :)) * http://www.linuxfromscratch.org Per imparare a costruirsi la propria distro di Linux. Non potresti mai fare questo con un sistema operativo proprietario, perché il codice sorgente non è disponibile. * Uri's TCP/IP Resources List - http://www.private.org.il/tcpip_rl.html FAQs, tutorials, guides, web pages & sites, and books about TCP/IP. * http://www.irchelp.org per sapere tutto su IRC (Internet Relay Chat). Tutorial introduttivo: http://www.irchelp.org/irchelp/misc/itnew2irc.html * The Network Administrators' Guide, by Olaf Kirc http://www.ibiblio.org/mdw/LDP/nag/nag.html * http://www.shellyeah.org/ questo sito offre la possibilità di avere un accesso Unix con shell gratuito, che potete utilizzare per imparare ad usare Unix o per leggere la posta con pine o elm o chattare col protocollo irc e altre cose. Ci sono delle limitazioni: non si possono lanciare compilatori o programmi forniti dall'utente, tuttavia potete lanciare script di shell. Potete scegliere tra la shell bash e tcsh. Registratevi e la password verrà generata automaticamente e inviata all'indirizzo di email che specificate. Ci si registra via telnet facendo: $ telnet shellyeah.org ed immettendo come nomeutente newuser, quindi seguite le istruzioni. Scegliete uno username e vi sarà assegnato un indirizzo di posta username@shellyeah.org ----------------------------- Software consigliato * LOAF, un mini Linux client da taschino LOAF (Linux On A Floppy) è una vecchia distribuzione di Linux molto semplice, che ben dimostra la flessibilità di questo sistema operativo. Sta in un solo floppy, si carica velocemente, ed è adatta ad un uso su un client di rete: contiene il web browser testuale lynx, il client ftp in modo testo, il client telnet e quello ssh, la shell KISS che, tra gli altri, comprende internamente il comando mount per montare filesystem, ad es. per salvare qualcosa che si è scaricato con ftp su un dischetto in formato minix. Per creare un filesystem minix su un dischetto (l'unico tipo di filesystem supportato dal kernel di LOAF) basta fare: mkfs /dev/fd0 Poi montate e accedere al dischetto con: cd /mnt mkdir floppy mount -t minix /dev/fd0 floppy cd floppy Quando avete finito smontatelo con: cd .. umount floppy (oppure umount /dev/fd0) Una limitazione dei filesystem minix è che i nomi dei file non possono essere più lunghi di 30 caratteri. Digitate help per vedere tutti i comandi della shell KISS. Trovate KISS (Keep It Simple Shell) e molte altre shell qui: ftp://sunsite.unc.edu/pub/Linux/system/shells nota: attenzione: stranamente il file kiss-0.21.tar.gz è compresso due volte con gzip. Dovete fare: $ gunzip kiss-0.21.tar.gz e poi di nuovo: $ tar zxvf kiss-0.21.tar Quindi leggetevi le istruzioni per compilare i sorgenti di KISS nel file kiss-0.21/doc/technotes.txt (occorre installare i pacchetti readline-devel e bison). LOAF usa il kernel 2.0.36, si installa in RAM, bastano 6 MB e un 386sx con scheda di rete per lavorare comodamente collegandosi ai server. Ottima per l'uso su computer pubblici dove non è installato linux, per quelli che non sopporterebbero utilizzare Wingdows [TM]. L'hd non lo vedete proprio, cosi' non potete fare danni (intenzionali) a Wingdows ;) Una volta caricato il sistema operativo potete spegnere il computer o riavviare il sistema con ALT-CTRL-DEL senza preoccuparvi di niente (eccetto una cosa: se avete montato un dischetto minix per salvare qualcosa, smontatelo prima). Se volete provarlo, andate qui: http://loaf.ecks.org/ fate il download dell'immagine numero # corrispondente alla scheda di rete del client su cui volete utilizzarla, create il dischetto con: $ dd if=loaf#.img of=/dev/fd0 inserite il dischetto nel client e fate il boot. Poi entrate come root e digitate lynx per vedere le istruzioni su come configurare la rete. Avete a disposizione 4 console virtuali su cui potete passare tramite i tasti ALT-F1..F4 * FreeBSD - http://www.freebsd.org Il mondo open-source è bello anche perchè è vario. FreeBSD è un ottimo sistema operativo Unix per uso server, non GPL, ma open-source. Io ho provato l'ultima versione stabile (la 4.3): ho scaricato l'immagine ISO da qui (ci ho messo una vita, beata la flat ;) ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/4.3-install.iso se non avete altro modo di procurarvelo posso spedirvi una copia masterizzata del CD, al solo costo del supporto più le spese di spedizione in posta prioritaria, cosa perfettamente legale, trattandosi di open-source. Se vi interessa prima scrivetemi una email ...spero che non sarete tanti, altrimenti passerò giornate a masterizzare e a fare la fila alla posta ;) Se invece abitate in zona, passate a casa mia con un CD vuoto :) Altre info su FreeBSD le trovate presso il Gruppo Utenti FreeBSD Italia (GUFI) http://www.gufi.org ----------------------------- Linux tip * LAN "casalinga" tra due PC (parte 3) Introduzione al server proxy squid. Per condividere l'accesso ai siti HTTP ed FTP nella vostra LAN casalinga, una alternativa alla configurazione del computer collegato alla rete come router (descritta nella newsletter precedente, fate riferimento all'archivio sul mio sito) consiste nell'installazione, sempre sul pc collegato ad internet, del server proxy di cache squid. Il vantaggio è che la configurazione del client è semplificata: tutto quello che il client deve sapere per accedere al web è il nome o l'indirizzo IP del proxy server e il numero della porta sul server che offre i servizi di proxying. Quando un client naviga sul web tramite il proxy, è come se stesse navigando ad internet alla consolle del server proxy. Occorre impostare questi dati nella configurazione del proprio browser. Lo svantaggio è che i servizi in uscita supportati sul client se si utilizza solo questo metodo sono solo HTTP e FTP (e l'antenato del web GOPHER). Occupiamoci prima della configurazione del server: # rpm -ivh squid-*.rpm Dopo l'installazione, viene impostato l'avvio al boot del demone squid, ma il demone non viene avviato. Per avviarlo, basta fare un reboot oppure (notate che Linux non è Windows in cui per ogni sciocchezzuola è obbligatorio riavviare): # /etc/init.d/squid start Starting squid: init_cache_dir /var/spool/squid... squid Se non volete squid caricato all'avvio, toglietelo dal runlevel corrente con comando drakxconf oppure ntsysv. Altri due programmi per stabilire quali demoni avviare all'avvio sono chkconfig (a riga di comando) e tksysv (per la X). Per default il demone squid viene avviato con l'opzione -D, che disabilita il test dei dns. Questa opzione va lasciata attivata se, come nel mio caso, volete avviare squid prima di stabilire la connessione ad internet. La porta di default che risponde alle richieste HTTP è la 3128. Il file di configurazione di squid è: /etc/squid/squid.conf e non è altro che una copia di /etc/squid/squid.conf.default, il quale per default abilita l'accesso HTTP solo all'host locale e quindi lo nega a tutti gli altri host, e ciò viene stabilito tramite le linee: acl localhost src 127.0.0.1/255.255.255.255 ... http_access allow localhost http_access deny all la prima definisce una lista di accesso (acl=access control list) a cui viene assegnato il nome localhost (si può scegliere il nome a piacere). Il tipo di questa acl è src, mentre la stringa che segue definisce l'indirizzo IP e la netmask relativa del client. Il nome della lista di accesso viene poi usato nella direttiva http_access per abilitare (allow) o proibire (deny) il tipo di accesso indicato ai client definiti nella acl stessa. Per abilitare l'accesso HTTP a tutti gli host della nostra rete di classe C 192.168.1.0 basta aggiungere le linee seguenti: acl myhome.it src 192.168.1.0/255.255.255.0 http_access allow myhome.it Il nome del gruppo l'ho scelto uguale al dominio privato che uso solo per ragioni di leggibilità. State attenti ad inserire la riga http_access prima della riga: http_access deny all Fatte le modifiche, se il demone squid era attivo, fate rileggergli il suo file di configurazione con: # /etc/init.d/squid reload Provate adesso ad usare il proxy. Supponendo ad es. che sul client abbiate il browser modo testo Lynx, basta settare due variabili di ambiente prima di lanciare lynx: # export http_proxy=http://ninuzzo:3128/ # export ftp_proxy=http://ninuzzo:3128/ Lo slash alla fine è importante per Lynx. Quindi provatelo: # lynx url_di_prova_a_scelta Da root date un'occhiata ai log di accesso con: # tail -f /var/log/squid/access.log Notate che quando richiedete una pagina che non è nella cache, la linea di log contiene il codice TCP_MISS. Provate poi a richiedere la stessa pagina e vedrete che la linea contiene ora TCP_HIT e che le luci del vostro modem (se non state accedendo alla rete con altri programmi) rimangono spente, cosa che indica che viene riutilizzato il contenuto della cache. ... nella prossima puntata: eseguire applicazioni X remote