#!/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 =~ 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;