#! /usr/bin/perl -w ############################################################## # dashlogin.pl by Michal Kocer # Script authentize your ADSL connection # to the Czech Telecom's dashboard. ############################################################## # Code inspired by script mw2.2.1 # http://www.perl.com/CPAN/authors/id/Z/ZH/ZHOUXIN/mw2.2.1 use Socket; use strict; # ############################################################## # KONFIGURACE ############################################################## ### Parametry ADSL my $uzivatel= "ah12345"; # vase dashboard jmeno my $heslo = "12345678"; # heslo pro dashboard my $sluzba = "xxxxxx-Basic"; # typ sluzby, je treba zjistit # pri pripojeni k dashboardu ### URL dashboardu CTc my $dashboard_url = "http://172.16.255.6/serviceLogon"; ### Parametry pripojeni na dashboard ### pro v IPCop 1.2.0 # my $proxy_host = "192.168.1.250"; # IP adresa IPCopu # my $proxy_port = "800"; # port jeho proxy cache ### pro v IPCop 1.3.0 my $proxy_host = "172.16.255.6";# IP adresa dashboardu my $proxy_port = "80"; # port pro pripojeni k dashboardu ############################################################## # Dale neni treba nic konfigurovat ############################################################## ### Ostatni promenne my $debug=$ARGV[0]; # uzijeme, kdyz chceme videt co se vraci my $socketaddr; my $content = "username=$uzivatel&password=$heslo&service=$sluzba"; my $wholePage = ""; # otevreme socket openSock(); # posleme do nej data post ($content,$dashboard_url); # nacteme co se vratilo $wholePage = ""; while ( ) { $wholePage .= $_; } close SOCK; # je-li nastavene $debug, vytiskneme co se vratilo z dashboardu if ($debug) { print "****************************************\n"; print "Answer:\n"; print "\n $wholePage\n"; print "****************************************\n"; } # ukoncime exit(0); ######## Konec programu ################################ # Podprogramy ########### ########### # subroutine: otevreme socket na SOCK ########### sub openSock { $socketaddr= sockaddr_in $proxy_port, inet_aton $proxy_host or die "Bad hostname\n"; socket SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp') or die "Bad socket\n"; connect SOCK, $socketaddr or die "Bad connection\n"; select((select(SOCK), $| = 1)[0]); } ########### # subroutine: post(content,url), zasle metodou POST 'content' na 'url' ########### sub post { my $content = shift @_; my $url = shift @_; my $crlf = "\015\012"; print SOCK "POST $url HTTP/1.0$crlf"; print SOCK "Content-type: application/x-www-form-urlencoded$crlf"; my $contentLength = length $content; print SOCK "Content-length: $contentLength$crlf"; print SOCK "$crlf"; print SOCK "$content"; if ($debug) { print "****************************************\n"; print "Request:\n"; print "POST $url HTTP/1.0\n"; print "Content-type: application/x-www-form-urlencoded\n"; print "Content-length: $contentLength\n\n"; print "$content\n"; } } ############### END #################################