#!/usr/bin/perl -w # Code Browser by loz 2002 (http://provisoire.net/navigator/text.txt) # Copyright © 27-juillet-2002 Loz # Copyleft : cette oeuvre est libre, vous pouvez la redistribuer et/ou # la modifier selon les termes de la Licence Art Libre # Vous trouverez un exemplaire de cette Licence sur le site Copyleft # Attitude http://www.artlibre.org ainsi que sur d'autres sites use strict; use CGI::Pretty qw/:standard :html3 *table/; use LWP::UserAgent; use URI::Heuristic; use LWP::Simple; use HTML::LinkExtor; use Text::Wrap; $Text::Wrap::columns = 80; use HTML::Entities; my $lien = "http://provisoire.com"; my $lien = param('lien'); $lien = URI::Heuristic::uf_urlstr($lien); print header, start_html( -title=>"Navigateur Html", ); if ( $lien ) { my $url = $lien; print "

Code Browser / Butineur de Code

"; print "by Loz from provisoire.net [code]"; &print_url_form(); print "

BEGIN / DEBUT

"; print "Liens..."; &liens($url); print "Contenu de la page..."; &page($url); print "

END / FIN

"; } else { print "

Code Browser / Butineur de Code

"; print "by Loz from provisoire.net [code]"; &print_url_form(); } my @footer = ("Code Browser by loz 2002", "Copyright © 27-juillet-2002 Loz", "Copyleft : cette oeuvre est libre, vous pouvez la redistribuer et/ou", "la modifier selon les termes de la Licence Art Libre", "Vous trouverez un exemplaire de cette Licence sur le site Copyleft", "Attitude http://www.artlibre.org ainsi que sur d'autres sites"); foreach (@footer) { print font({size=>-1},$_),br(); } print end_html; exit(0); # ---------- fonctions ------------ # sub print_url_form { print start_form(-name=>'formulaire'); print "Url "; print textfield(-name=>'lien'); print submit(-label=>'AFFICHER'); print end_form; } sub page { my $url = shift; my $req = HTTP::Request->new(GET => $url); my $ua = LWP::UserAgent->new('lozilla', 'lozilla@provisoire.net'); my $page = $ua->simple_request($req); if ( $page->is_error() ) { print p('erreur url') }; my $content = $page->content(); # supprimer les balises version texte #$content =~ s/<[^>]+>//g; # convertir les balises en texte $content =~ s/&/&/g; $content =~ s//>/g; $content = wrap('', '', $content); # entitées html conversion version texte #HTML::Entities::decode($content); print font({-color=>'000088'},"
$content
"); } sub liens { my $url = shift; my %deja_vu; my $ret_links = HTML::LinkExtor->new(undef,$url); $ret_links->parse(get($url))->eof; my @links_tab = $ret_links->links; foreach my $lien (@links_tab) { my @element = @$lien; my ($type,$nom,$valeur) = @element; if ($nom eq "href") {$deja_vu{$valeur}++}; } my $result = "
    "; for (sort keys %deja_vu) {$result .= li( font({-size=>-1},a({-href=>"index.cgi?lien=$_"},$_) ) )} $result .= "
"; print $result; } exit;