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
<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