Newsgroup: it.comp.os.linux.iniziare
Titolo: Sistema per attivare una connessione da client.

Salve.
Ho appena allestito una LAN con server linux il quale è dotato di ISDN.
Finora sono riuscito a configurare l'ISDN e quindi tramite telnet da
client linux su server linux riesco a portare su la connessione con
'isdnctrl dial ippp0' e quindi navigo dal client linux usando il server
linux come gateway.
La soluzione adottata è piuttosto scomoda ovviamente, anche considerando
che un client windows non può portare su e giù la connessione. PErtanto
devo trovare una soluziopne elegante e funzionale ma senza correre il
rischio di aver connessioni inavertite dal server sull'ISDN altrimenti la
bolletta schizza al cielo.
Ho letto parecchio in merito tra messaggi e docs ma la confusione regna.
Anzitutto chiedo se l'aver impostato il DIALMODE=manual in
'/etc/sysconfig/network-scripts/ifcfg-ippp0' mi mette al riparo dal "dial
on demand" cioè non voglio che samba, bind, apache o postfix mi instaurino
delle connessioni per conto loro? Devo essere io e solo io ad aprire le
connessioni con ISDN.
Poi devo risolvere il problema delle modalità di
attiviazione/disattivazione della connessione senza ricorrere a telnet e
permettendo anche ai client windows di acedere alla rete. Le soluzioni
possibili mi sembrano: a) Avere apache in funzione che tramite cgi mi apre
delle pagine nei browser dei client da cui attivare la connessione. (dove
trovo dei script cgi fatti? Ho trovato solo quelli sotto ma non so se
vanno bene..... Ho provato a modificarli ma penso che non posso utilizzare
il PID nel file di stop. Se volessi utilizzare isdnctrl? Non sono bravo
con il perl.............anzi non ne capisco niente. SPero che chi ne
capisce gli dia una modifica.) b) Usare il server come modem server. Se ho
ben capito tale modem server dovrebbe comportarsi come daemone che attiva
la connessione quando gli vengono delle richieste dai client, in pratica
ciò che farebbe ipppd qualora il DIALMODE fosse 'auto'. No? Solo che
...... come si disattiva la connessione? In questo caso non ho ben capito
come farei ad attivare la connessione sia da client linx che windows. Chi
mi illumina? Sulla FAQ di ISDN4LINUX parla di 'modemd' e 'mserver'. COme
funzionano?
SCRIPT CONNESSIONE ORIGINALE
-------------------------------------------------------------------
#!/usr/bin/perl
`/usr/sbin/pppd`;
@pppaddr = `/sbin/ifconfig`;
foreach $addr (@pppaddr){
	if($addr =~ /ppp0/){
        	$found = 1;
	}
}
if ($found){
	&printFoundHead;
	&printAddresses;
	&printSearchEngines;
	&printStopPPP;
	&printFoot;
}else{
	&printNotFoundHead;
	&printFoot;
}
sub printAddresses{
       	print "<hr><h3>Your Addresses Are:</H3>\n";
	@pppip = `/sbin/ifconfig -l ppp0`;
 
	@colsplit = split(":",$pppip[1]);
	@inetarr = split(" ", $colsplit[1]);
	print "<P><b>Internet IP Address:</b> $inetarr[0]";
        @inetarr = split(" ", $colsplit[1]);
	print "<P><b>Point-to-Point IP Address:</b> $inetarr[0]";
        print "<P><b>Net Mask IP Address:</b> $colsplit[3]";
 
}
sub printFoundHead{
	print "Content-Type: text/html\n\n";
	print "<HTML>\n<HEAD>\n\t<TITLE>A Dialup Connection Has Been
	Established</TITLE>\n"; print "</HEAD>\n<BODY BGCOLOR=\"white\">\n";
	print "<FONT FACE=\"arial,helvetica\" size=2>\n"; print "<H1>Dialup
	Connection Established</H1>\n"; print "<P>A dialup connection has been
	established. Please enjoy your journey on the world's cyber
	highway!</P>\n";
}
sub printSearchEngines{
	print "<hr>";
	print "<h3>Popular Search Engines</H3>"; print "<UL>";
	print "<LI><a href=\"
http://www.google.com
\">Google</a>"; print "<LI><a
	href=\"
http://www.infoseek.com
\">Infoseek</a>"; print "<LI><a
	href=\"
http://www.excite.com
\">Excite</a>"; print "<LI><a
	href=\"
http://www.yahoo.com
\">Yahoo</a>"; print "</UL>";
}
sub printStopPPP{
	print "<hr>";
	print "<P>To stop ppp, click the button below.</P>"; print "<P><form
	action=\"pppstop.cgi\" method=\"post\">"; print "<input type=\"submit\"
	value=\"Stop PPP\">"; print "</form></P>";
}
sub printNotFoundHead{
	print "Content-Type: text/html\n\n";
	print "<HTML>\n<HEAD>\n\t<TITLE>A Dialup Connection Has Been
	Initiated</TITLE>\n"; print "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"5;
	URL=ppp.cgi\">"; print "</HEAD>\n<BODY BGCOLOR=\"white\">\n"; print
	"<FONT FACE=\"arial,helvetica\" size=2>\n"; print "<H1>Dialup Connection
	Initiated</H1>\n"; print "<P>A dialup connection has been initiated.
	Please wait while the connection is established. You will be informed
	momentarily that the connection has been made. Thank you for your
	patience.<P>\n";
 
}
sub printFoot{
	print "</BODY>\n</HTML>\n";
	exit(0);
}
-------------------------------------------------------------------
SCRIPT DI CONNESSIONE MODIFICATO
---------------------------------------------------------------------
#!/usr/bin/perl
`/usr/sbin/isdnctrl dial ippp0`;
@pppaddr = `/sbin/ifconfig`;
foreach $addr (@pppaddr){
	if($addr =~ /ippp0/){
        	$found = 1;
	}
}
if ($found){
	&printFoundHead;
	&printAddresses;
	&printSearchEngines;
	&printStopPPP;
	&printFoot;
}else{
	&printNotFoundHead;
	&printFoot;
}
sub printAddresses{
       	print "<hr><h3>Your Addresses Are:</H3>\n";
	@pppip = `/sbin/ifconfig -l ippp0`;
 
	@colsplit = split(":",$pppip[1]);
	@inetarr = split(" ", $colsplit[1]);
	print "<P><b>Internet IP Address:</b> $inetarr[0]";
        @inetarr = split(" ", $colsplit[1]);
	print "<P><b>Point-to-Point IP Address:</b> $inetarr[0]";
        print "<P><b>Net Mask IP Address:</b> $colsplit[3]";
 
}
sub printFoundHead{
	print "Content-Type: text/html\n\n";
	print "<HTML>\n<HEAD>\n\t<TITLE>A Dialup Connection Has Been
	Established</TITLE>\n"; print "</HEAD>\n<BODY BGCOLOR=\"white\">\n";
	print "<FONT FACE=\"arial,helvetica\" size=2>\n"; print "<H1>Dialup
	Connection Established</H1>\n"; print "<P>A dialup connection has been
	established. Please enjoy your journey on the world's cyber
	highway!</P>\n";
}
sub printSearchEngines{
	print "<hr>";
	print "<h3>Popular Search Engines</H3>"; print "<UL>";
	print "<LI><a href=\"
http://www.google.com
\">Google</a>"; print "<LI><a
	href=\"
http://www.infoseek.com
\">Infoseek</a>"; print "<LI><a
	href=\"
http://www.excite.com
\">Excite</a>"; print "<LI><a
	href=\"
http://www.yahoo.com
\">Yahoo</a>"; print "</UL>";
}
sub printStopPPP{
	print "<hr>";
	print "<P>To stop ppp, click the button below.</P>"; print "<P><form
	action=\"ipppstop.cgi\" method=\"post\">"; print "<input type=\"submit\"
	value=\"Stop IPPP\">"; print "</form></P>";
}
sub printNotFoundHead{
	print "Content-Type: text/html\n\n";
	print "<HTML>\n<HEAD>\n\t<TITLE>A Dialup Connection Has Been
	Initiated</TITLE>\n"; print "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"5;
	URL=ippp.cgi\">"; print "</HEAD>\n<BODY BGCOLOR=\"white\">\n"; print
	"<FONT FACE=\"arial,helvetica\" size=2>\n"; print "<H1>Dialup Connection
	Initiated</H1>\n"; print "<P>A dialup connection has been initiated.
	Please wait while the connection is established. You will be informed
	momentarily that the connection has been made. Thank you for your
	patience.<P>\n";
 
}
sub printFoot{
	print "</BODY>\n</HTML>\n";
	exit(0);
}
-------------------------------------------------------------------------
SCRIPT DI STOP DELLA CONNESSIONE
-------------------------------------------------------------------------
#!/usr/bin/perl -w
print "Content-type: TEXT/HTML\n\n";
open (PID, "/etc/ppp/ppp0.pid") or die "Couldn't open PID file for
reading.\n"; while ($line = <PID>){
	chomp $line;
	last;
}
`kill -9 $line`;
`/sbin/ifconfig ippp0 down`;
$who = `whoami`;
print "<html><head><title>PPP Stopped by $who</title></head><body
bgcolor=\"white\">\n"; print "<H1>PPP has been stopped</h1>";
exit(0);
 
 
SCRIPT DI STOP DELLA CONNESSIONE MODIFICATO
-------------------------------------------------------------------------
#!/usr/bin/perl -w
print "Content-type: TEXT/HTML\n\n";
open (PID, "/etc/ppp/ppp0.pid") or die "Couldn't open PID file for
reading.\n"; while ($line = <PID>){
	chomp $line;
	last;
}
`kill -9 $line`;
`/sbin/ifconfig ippp0 down`;
$who = `whoami`;
print "<html><head><title>PPP Stopped by $who</title></head><body
bgcolor=\"white\">\n"; print "<H1>PPP has been stopped</h1>";
exit(0);
-----------------------------------------------
Ciao e grazie

 devo trovare una soluziopne elegante e funzionale [---]
Ho provato, pero' solo su linea analogica, molte accoppiate client 
windows/server linux:
1) opzione Demand di ppp (ne hai gia' parlato tu) 
2) masqdialer -> buono, ma mi incasinava postfix e non sono riuscito a 
capire il perche'
3) connectd -> efficiente e semplice, il client per windows e' scarsino
4) altconnect (evoluzione di connectd)-> ottimo, ma il client windows ha 
limitazioni di licenza 
5) connect (
www.methods.co.nz
) -> mai riuscito a compilarlo, il client 
per windows sembra carino
6) lineserver -> e' un progetto recente, devo ancora testarlo a fondo
7) wwwoffle mi pare abbia un'opzione, ma non lo uso da troppo tempo
8) diald+dialmon -> la mia scelta, connessioni indesiderate, dopo qualche 
minima rifinitura sui filtri, non ne ho mai avute. Tra l'altro e' anche 
quello su cui trovi piu' materiale.
Non credo ci sia molto altro in giro. 
Purtroppo non so se tutti supportino, e soprattutto come, connessioni 
isdn.
Spero che l'elenco ti sia comunque utile.
Ciao
-- 
           togliere qualcosa dall'indirizzo

 devo trovare una soluziopne elegante e funzionale 
Puoi scrivere un piccolo programma CGI cosi' da poter aviare/arrestare
la connessione dai client windows. Potrebbe diventare la pagina
iniziale di tutti i client, per esempio. 
-- 
Stefano - Hodie quarto Kalendas Decembres MMI est

 ha scritto:

E' quello a cui pensavo io.  Infatti ho allegato gli script che ho
trovato non ricordo dove....
Ho bisogno di qualcuno che me li controlli perchč di PERL non ne capisco
un h. :--)
Inolre questi script sono per ppp e io li devo usare per isdn.
Mi chiedo infine se avere apache che gira solo per avere questi script a
disposizione non mi esponga a rischi inutili (buchi di apache, capttiva
gestione da parte mia.............dopotutto non posso investire tanto
tempo per imaprare tutto bene ;-)
Ciao

 quello su cui trovi piu' materiale.
In pratica mi pare di aver capito che tu non hai ISDN. Il fatto č che con
ISDN non voglio dover usare l'auto dialmode. E' un rischio che non voglio
correre. Avendo DNS, POSTFIX che girano sul server potrei avere
connessioni indesiderate che sono difficili da debuggare.
Comunque se puoi inviarmi qualche link su diald-dialmon mi potrebbe
essere utile.
Ciao e grazie
