Generate error pages

This commit is contained in:
nemunaire 2014-01-20 09:58:01 +01:00
parent e4106ef46c
commit 5e8781baf7
6 changed files with 72 additions and 24 deletions

View File

@ -18,21 +18,39 @@ use Thread::Queue;
our $outdir = "outest";
our $outteams = "/teams/";
our $outerrors = "/errors/";
our $outhome = "/htdocs/";
our $tmpdir = tempdir();
our $baseurl = "http://localhost";
our $baseadmin = "/admin/";
our $basehome = "/";
our $baseerrors = "/errors/";
our $baseteams = "/connected/";
our $threads = 6;
sub genErrors(;$)
{
my $m = shift // Mirror->new();
$m->add_url($baseerrors . "400");
$m->add_url($baseerrors . "403");
$m->add_url($baseerrors . "404");
$m->add_url($baseerrors . "413");
$m->add_url($baseerrors . "500");
$m->add_url($baseerrors . "502");
return $m;
}
sub genHome(;$)
{
my $m = shift // Mirror->new();
$m->add_url($basehome . "index.html");
$m->add_url($basehome);
genErrors($m);
return $m;
}
@ -96,11 +114,16 @@ sub manage
say "Generate all teams";
genFull($m);
}
elsif (/^HOME$/)
elsif (/^HOME/)
{
say "Generate full public part";
genHome($m);
}
elsif (/^ERRORS?/)
{
say "Generate errors pages";
genErrors($m);
}
elsif (/^TEAM([0-9]+)$/)
{
say "Generate team: $1";
@ -178,12 +201,13 @@ sub sync
if (-f)
{
my $todir = $File::Find::dir."/";
if ($todir =~ /^\Q$main::tmpdir\E\/?(\Q$main::baseadmin\E|\Q$main::baseteams\E|\Q$main::basehome\E)(.*)$/)
if ($todir =~ /^\Q$main::tmpdir\E\/?(\Q$main::baseadmin\E|\Q$main::baseteams\E|\Q$main::baseerrors\E|\Q$main::basehome\E)(.*)$/)
{
$todir = $tmpcopy;
return if ($1 eq $main::baseadmin);
$todir .= $main::outteams if ($1 eq $main::baseteams);
$todir .= $main::outerrors if ($1 eq $main::baseerrors);
$todir .= $main::outhome if ($1 eq $main::basehome);
$todir .= $2;
@ -220,6 +244,7 @@ sub sync
return if ($1 eq $main::baseadmin);
$todir .= $main::outteams if ($1 eq $main::baseteams);
$todir .= $main::outerrors if ($1 eq $main::baseerrors);
$todir .= $main::outhome if ($1 eq $main::basehome);
$todir .= $2;
@ -533,7 +558,7 @@ sub run
for my $link (@links)
{
$self->add_url($link) if ($link ne $url && $link =~ /^?\Q$url\E/);
$self->add_url($link) if ($link ne $url && ($link =~ /^?\Q$url\E/) || $p->{url} =~ /\.css$/);
}
}
}
@ -611,16 +636,23 @@ sub getNearLinks($)
{
my $self = shift;
my @links = $self->{content} =~ /(?:src|href)="(?:\Q$main::baseurl\E|(?:\/?\.\.)+)?([^:"]+)"/g;
for my $action ($self->{content} =~ /action="(?:\Q$main::baseurl\E|(?:\/?\.\.)+)?([^:"]+)"/g)
if ($self->{url} =~ /\.css$/)
{
push @links, $action;
push @links, "$action/gerr";
push @links, "$action/serr";
return $self->{content} =~ /url\(["']?(?:\Q$main::baseurl\E|(?:\/?\.\.)+)?([^:)"'?#]+)/g;
}
else
{
my @links = $self->{content} =~ /(?:src|href)="(?:\Q$main::baseurl\E|(?:\/?\.\.)+)?([^:"]+)"/g;
return @links;
for my $action ($self->{content} =~ /action="(?:\Q$main::baseurl\E|(?:\/?\.\.)+)?([^:"]+)"/g)
{
push @links, $action;
push @links, "$action/gerr";
push @links, "$action/serr";
}
return @links;
}
}
sub treatLinks($)

View File

@ -217,6 +217,11 @@ else
{
if ($n == 0)
$page = require("public/home.php");
else if ($n && $p[0] == "errors")
{
$template->assign("err", intval($p[1]));
$page = "err";
}
else if ($n == 1)
{
$TEAM = intval(substr($p[0], 0, strpos($p[0], "-")));
@ -232,7 +237,7 @@ else
if (empty($page) || $page == "404" || ! file_exists(ONYX . "/tpl/bootstrap/".$page.".tpl"))
{
$template->assign("err", 404);
$template->display("404.tpl");
$template->display("err.tpl");
}
else
$template->display($page.".tpl");

View File

@ -1 +1,8 @@
{"403":{"title":"Erreur 403","subtitle":"Accès réglementé","content":"Vous n'\u00eates pas autoris\u00e9 \u00e0 acc\u00e9der \u00e0 cette page."},"404":{"title":"Erreur 404","subtitle":"Page introuvable","content":"La page à laquelle vous tentez d'accéder n'existe pas ou l'adresse que vous avez tapée est incorrecte."},"500":{"title":"Erreur 500","subtitle":"Serveur indisponible","content":"Le serveur est actuellement dans l'incapacit\u00e9 de repondre \u00e0 votre requ\u00eate.<br \/><br \/>Veuillez recommencer plus tard."}}
{
"400":{"title":"Erreur 400","subtitle":"Requ&ecirc;te erron&eacute;e","content":"V&eacute;rifiez les param&egrave;tres de votre navigateur, il est tr&egrave;s probable que ce probl&egrave;me soit li&eacute; &agrave; un mauvais certificat client : invalide, r&eacute;voqu&eacute;, ..."},
"403":{"title":"Erreur 403","subtitle":"Acc&eacute;s r&eacute;glement&eacute;","content":"Vous n'&ecirc;tes pas autoris&eacute; &agrave; acc&eacute;der &agrave; cette page."},
"404":{"title":"Erreur 404","subtitle":"Page introuvable","content":"La page &agrave; laquelle vous tentez d'acc&eacute;der n'existe pas ou l'adresse que vous avez tap&eacute;e est incorrecte."},
"413":{"title":"Erreur 413","subtitle":"Requ&ecirc;te trop grande","content":"Vous tentez d'envoyer trop de donn&eacute;es que ce que le serveur est pr&ecirc;t ou est capable de traiter."},
"500":{"title":"Erreur 500","subtitle":"Erreur interne","content":"Le serveur est actuellement dans l'incapacit&eacute; de repondre &agrave; votre requ&ecirc;te.<br><br>Veuillez recommencer plus tard."},
"502":{"title":"Erreur 502","subtitle":"Erreur de la passerelle (gateway)","content":"Le serveur est actuellement dans l'incapacit&eacute; de repondre &agrave; votre requ&ecirc;te.<br><br>Veuillez recommencer dans quelques instants."}
}

View File

@ -1,12 +0,0 @@
{extends file="layout.tpl"}
{block name=content}
<div class="page-header">
<h1>
{text file="erreurs" path="$err/title"}
<small>{text file="erreurs" path="$err/subtitle"}</small>
</h1>
</div>
<p>
{text file="erreurs" path="$err/content"}
</p>
{/block}

View File

@ -0,0 +1,15 @@
{extends file="layout.tpl"}
{block name=content}
<div class="jumbotron">
<div class="container">
<h1>
{text file="erreurs" path="$err/title"}
<small>{text file="erreurs" path="$err/subtitle"}</small>
</h1>
<p>
{text file="erreurs" path="$err/content"}
</p>
</div>
</div>
{/block}

View File

@ -15,6 +15,7 @@ then
OPTS="$OPTS --delete"
fi
rsync -e ssh -av $OPTS out/errors phobos:~/
rsync -e ssh -av $OPTS out/htdocs phobos:~/
rsync -e ssh -av $OPTS out/teams phobos:~/
rsync -e ssh -av $OPTS files phobos:~/