From 5e8781baf7c26dee23ef5f45a9197948ff207f62 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 20 Jan 2014 09:58:01 +0100 Subject: [PATCH] Generate error pages --- gen_site.pl | 52 ++++++++++++++++++++++++++++++-------- htdocs/index.php | 7 ++++- onyx/lang/fr/erreurs.json | 9 ++++++- onyx/tpl/bootstrap/404.tpl | 12 --------- onyx/tpl/bootstrap/err.tpl | 15 +++++++++++ synchro.sh | 1 + 6 files changed, 72 insertions(+), 24 deletions(-) delete mode 100644 onyx/tpl/bootstrap/404.tpl create mode 100644 onyx/tpl/bootstrap/err.tpl diff --git a/gen_site.pl b/gen_site.pl index 6052d85c..5f980509 100755 --- a/gen_site.pl +++ b/gen_site.pl @@ -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($) diff --git a/htdocs/index.php b/htdocs/index.php index 840aa92c..15bb7450 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -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"); diff --git a/onyx/lang/fr/erreurs.json b/onyx/lang/fr/erreurs.json index b975bbc0..3bfc1b57 100644 --- a/onyx/lang/fr/erreurs.json +++ b/onyx/lang/fr/erreurs.json @@ -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.

Veuillez recommencer plus tard."}} +{ + "400":{"title":"Erreur 400","subtitle":"Requête erronée","content":"Vérifiez les paramètres de votre navigateur, il est très probable que ce problème soit lié à un mauvais certificat client : invalide, révoqué, ..."}, + "403":{"title":"Erreur 403","subtitle":"Accés réglementé","content":"Vous n'êtes pas autorisé à accéder à 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."}, + "413":{"title":"Erreur 413","subtitle":"Requête trop grande","content":"Vous tentez d'envoyer trop de données que ce que le serveur est prêt ou est capable de traiter."}, + "500":{"title":"Erreur 500","subtitle":"Erreur interne","content":"Le serveur est actuellement dans l'incapacité de repondre à votre requête.

Veuillez recommencer plus tard."}, + "502":{"title":"Erreur 502","subtitle":"Erreur de la passerelle (gateway)","content":"Le serveur est actuellement dans l'incapacité de repondre à votre requête.

Veuillez recommencer dans quelques instants."} +} diff --git a/onyx/tpl/bootstrap/404.tpl b/onyx/tpl/bootstrap/404.tpl deleted file mode 100644 index b2e2b7f5..00000000 --- a/onyx/tpl/bootstrap/404.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{extends file="layout.tpl"} -{block name=content} - -

- {text file="erreurs" path="$err/content"} -

-{/block} diff --git a/onyx/tpl/bootstrap/err.tpl b/onyx/tpl/bootstrap/err.tpl new file mode 100644 index 00000000..869b6c5c --- /dev/null +++ b/onyx/tpl/bootstrap/err.tpl @@ -0,0 +1,15 @@ +{extends file="layout.tpl"} + +{block name=content} +
+
+

+ {text file="erreurs" path="$err/title"} + {text file="erreurs" path="$err/subtitle"} +

+

+ {text file="erreurs" path="$err/content"} +

+
+
+{/block} diff --git a/synchro.sh b/synchro.sh index 4ecb9cd0..989d2bca 100755 --- a/synchro.sh +++ b/synchro.sh @@ -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:~/