2013-10-09 13:40:23 +00:00
|
|
|
<?php
|
|
|
|
//Inclusion de l'API Onyx
|
|
|
|
require_once(trim(file_get_contents('./.onyx')));
|
|
|
|
|
2013-12-11 11:58:17 +00:00
|
|
|
define("SALT_PUBLIC", $VAR["prefix_public"]);
|
|
|
|
define("SALT_USER", $VAR["prefix_teams"]);
|
|
|
|
define("SALT_ADMIN", $VAR["prefix_admin"]);
|
2013-10-22 06:16:02 +00:00
|
|
|
|
2013-10-09 13:40:23 +00:00
|
|
|
//On active le débogage si l'on est sur le domaine de debug
|
2013-11-29 02:10:12 +00:00
|
|
|
|
2014-01-14 15:11:59 +00:00
|
|
|
//if ($_SERVER["SERVER_NAME"] == "localhost" || $_SERVER["SERVER_NAME"] == "fic" || $_SERVER["SERVER_NAME"] == "fic.nemunai.re" || $_SERVER["SERVER_NAME"] == "atlantis.chen.li")
|
2013-10-09 13:40:23 +00:00
|
|
|
define("DEBUG", true);
|
|
|
|
|
|
|
|
//Chargement de tout le nécessaire pour le site
|
2013-10-22 06:19:51 +00:00
|
|
|
require_once("common.php");
|
2013-10-09 13:40:23 +00:00
|
|
|
|
2014-08-27 10:26:13 +00:00
|
|
|
$template->assign("SALT_CDN","");
|
2013-12-11 11:58:17 +00:00
|
|
|
$template->assign("SALT_PUBLIC",SALT_PUBLIC);
|
2013-10-26 06:59:59 +00:00
|
|
|
$template->assign("SALT_USER",SALT_USER);
|
|
|
|
$template->assign("SALT_ADMIN",SALT_ADMIN);
|
|
|
|
|
2013-11-29 02:10:12 +00:00
|
|
|
// Convert hidden URL to raw one
|
|
|
|
$urls = Cache::read("urls");
|
|
|
|
$p = strtolower(gpc("p"));
|
|
|
|
|
|
|
|
if (!empty($urls["/".$p]))
|
|
|
|
$p = $urls["/".$p];
|
|
|
|
|
|
|
|
$n = preg_match_all("#[^/]+#", $p, $out);
|
2013-10-22 06:16:02 +00:00
|
|
|
$p = $out[0];
|
2013-10-09 13:40:23 +00:00
|
|
|
|
2013-10-22 06:16:02 +00:00
|
|
|
// Admin part
|
2013-10-22 06:19:51 +00:00
|
|
|
if ($n && $p[0] == SALT_ADMIN)
|
2013-10-09 13:40:23 +00:00
|
|
|
{
|
2013-11-08 18:15:17 +00:00
|
|
|
if (isset($p[1]))
|
|
|
|
$template->assign("menu_where", $p[1]);
|
|
|
|
else
|
|
|
|
$template->assign("menu_where", "");
|
|
|
|
if (isset($p[2]))
|
|
|
|
$template->assign("submenu_where", $p[2]);
|
|
|
|
else
|
|
|
|
$template->assign("submenu_where", "");
|
|
|
|
|
|
|
|
$template->assign("themes", Theme::get_themes());
|
|
|
|
|
2013-10-22 06:16:02 +00:00
|
|
|
if ($n <= 1)
|
|
|
|
$page = require("admin/home.php");
|
|
|
|
else
|
2013-10-09 13:40:23 +00:00
|
|
|
{
|
2013-11-08 18:15:17 +00:00
|
|
|
if (isset($p[2]))
|
|
|
|
$cmpstr = $p[1]."/".$p[2];
|
|
|
|
else
|
|
|
|
$cmpstr = $p[1];
|
|
|
|
|
2013-11-28 21:03:27 +00:00
|
|
|
if (strpos($cmpstr, 'ex/') === 0)
|
|
|
|
$page = require("admin/exercice.php");
|
|
|
|
else
|
|
|
|
switch($cmpstr)
|
|
|
|
{
|
|
|
|
case "certificate":
|
|
|
|
case "certificate/":
|
|
|
|
case "certificate/newca":
|
|
|
|
case "certificate/newca/":
|
2014-11-20 17:04:39 +00:00
|
|
|
case "certificate/newsrv":
|
|
|
|
case "certificate/newsrv/":
|
2013-11-30 20:31:18 +00:00
|
|
|
case "certificate/newclient":
|
|
|
|
case "certificate/newclient/":
|
2013-11-28 21:03:27 +00:00
|
|
|
case "certificate/deleteca":
|
|
|
|
case "certificate/deleteca/":
|
2013-11-30 20:31:18 +00:00
|
|
|
case "certificate/revoke":
|
|
|
|
case "certificate/revoke/":
|
2014-11-20 17:04:39 +00:00
|
|
|
case "certificate/revokesrv":
|
|
|
|
case "certificate/revokesrv/":
|
2013-11-30 20:31:18 +00:00
|
|
|
case "certificate/get":
|
|
|
|
case "certificate/get/":
|
2013-11-28 21:03:27 +00:00
|
|
|
$page = require("admin/certificate.php");
|
|
|
|
break;
|
|
|
|
|
2014-01-14 18:45:56 +00:00
|
|
|
case "chrono":
|
|
|
|
case "chrono/":
|
|
|
|
case "chrono/init":
|
|
|
|
case "chrono/init/":
|
|
|
|
case "chrono/start":
|
|
|
|
case "chrono/start/":
|
|
|
|
$page = require("admin/chrono.php");
|
|
|
|
break;
|
|
|
|
|
2013-11-28 21:03:27 +00:00
|
|
|
case "exercices/import":
|
|
|
|
case "exercices/import/":
|
|
|
|
$page = require("admin/import_exercices.php");
|
|
|
|
break;
|
|
|
|
|
|
|
|
// Theme
|
|
|
|
case "themes":
|
|
|
|
case "themes/":
|
|
|
|
$page = require("admin/list_themes.php");
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "themes/import":
|
|
|
|
case "themes/import/":
|
|
|
|
$page = require("admin/import_themes.php");
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "themes/export":
|
|
|
|
case "themes/export/":
|
|
|
|
$page = require("admin/export_theme.php");
|
|
|
|
break;
|
|
|
|
|
|
|
|
// Users
|
|
|
|
case "teams":
|
|
|
|
case "teams/":
|
|
|
|
$page = require("admin/list_users.php");
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "teams/import":
|
|
|
|
case "teams/import/":
|
|
|
|
$page = require("admin/import_users.php");
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "teams/export":
|
|
|
|
case "teams/export/":
|
|
|
|
$page = require("admin/export_users.php");
|
|
|
|
break;
|
|
|
|
}
|
2013-10-09 13:40:23 +00:00
|
|
|
}
|
2013-10-22 06:16:02 +00:00
|
|
|
}
|
2013-10-09 13:40:23 +00:00
|
|
|
|
2013-10-22 06:16:02 +00:00
|
|
|
// Known users
|
2013-10-22 06:19:51 +00:00
|
|
|
else if ($n && $p[0] == SALT_USER)
|
2013-10-22 06:16:02 +00:00
|
|
|
{
|
|
|
|
$connected = true;
|
|
|
|
if ($n <= 1)
|
2013-11-08 14:47:55 +00:00
|
|
|
{
|
|
|
|
require("public/home.php");
|
|
|
|
$page = "teams/list";
|
|
|
|
}
|
2014-01-20 09:32:34 +00:00
|
|
|
|
2014-01-20 17:59:15 +00:00
|
|
|
else if (empty($VAR["start_challenge"]))
|
2014-01-20 09:32:34 +00:00
|
|
|
{
|
|
|
|
$TEAM = new Team($p[1]);
|
|
|
|
$template->assign("my_team", $TEAM);
|
|
|
|
$template->assign("themes", Theme::get_themes());
|
|
|
|
|
|
|
|
require("team/me.php");
|
|
|
|
$page = "teams/lobby";
|
|
|
|
}
|
|
|
|
|
2013-10-22 06:16:02 +00:00
|
|
|
else
|
2013-10-09 13:40:23 +00:00
|
|
|
{
|
2013-11-08 14:47:55 +00:00
|
|
|
$TEAM = new Team($p[1]);
|
|
|
|
$template->assign("my_team", $TEAM);
|
|
|
|
$template->assign("themes", Theme::get_themes());
|
2013-10-22 06:16:02 +00:00
|
|
|
|
|
|
|
if ($n <= 2)
|
2013-11-28 15:03:36 +00:00
|
|
|
$page = require("team/summary.php");
|
2013-10-22 06:16:02 +00:00
|
|
|
else
|
|
|
|
{
|
|
|
|
switch($p[2])
|
|
|
|
{
|
2013-10-26 06:59:59 +00:00
|
|
|
case "me/":
|
|
|
|
case "me":
|
|
|
|
$page = require("team/me.php");
|
2013-10-22 06:16:02 +00:00
|
|
|
break;
|
|
|
|
|
2014-01-14 16:11:10 +00:00
|
|
|
case "rank/":
|
|
|
|
case "rank":
|
|
|
|
$page = require("team/rank.php");
|
|
|
|
break;
|
|
|
|
|
2013-10-22 06:16:02 +00:00
|
|
|
case "summary":
|
|
|
|
case "summary/":
|
|
|
|
$page = require("team/summary.php");
|
|
|
|
break;
|
2013-11-05 01:53:48 +00:00
|
|
|
|
|
|
|
case "confirmation":
|
|
|
|
$page = require("team/confirmation.php");
|
|
|
|
break;
|
2013-10-22 06:16:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// SALT/$team/$theme
|
|
|
|
if (empty($page))
|
|
|
|
{
|
2013-11-08 14:47:55 +00:00
|
|
|
$tmp = explode("-", $p[2]);
|
|
|
|
$id = intval($tmp[0]);
|
2013-11-28 21:25:54 +00:00
|
|
|
|
|
|
|
if ($id == 0)
|
|
|
|
$page = "404";
|
|
|
|
else
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
$THEME = new Theme($id);
|
|
|
|
unset($tmp, $id);
|
|
|
|
$template->assign("cur_theme", $THEME);
|
|
|
|
|
|
|
|
if ($n == 4 || ($n >= 5 && $p[4] == "submission"))
|
|
|
|
$id_exo = $p[3];
|
|
|
|
else if ($n == 3)
|
|
|
|
{
|
|
|
|
foreach($THEME->get_exercices_ordered() as $exo)
|
|
|
|
{
|
|
|
|
if (! $exo->has_solved($TEAM))
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
$id_exo = $exo->id;
|
|
|
|
}
|
|
|
|
|
|
|
|
$EXERCICE = new Exercice($id_exo, $THEME);
|
|
|
|
$template->assign("cur_exercice", $EXERCICE);
|
|
|
|
$page = require("team/exercice.php");
|
|
|
|
}
|
|
|
|
catch(ExerciceNotFoundException $e)
|
|
|
|
{
|
|
|
|
$page = "404";
|
|
|
|
}
|
|
|
|
catch(InvalidThemeException $e)
|
|
|
|
{
|
|
|
|
$page = "404";
|
|
|
|
}
|
|
|
|
catch(ThemeNotFoundException $e)
|
|
|
|
{
|
|
|
|
$page = "404";
|
|
|
|
}
|
|
|
|
}
|
2013-10-22 06:16:02 +00:00
|
|
|
}
|
|
|
|
}
|
2013-10-09 13:40:23 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-10-22 06:16:02 +00:00
|
|
|
// Public part
|
|
|
|
else
|
2013-10-09 13:40:23 +00:00
|
|
|
{
|
2013-10-22 06:16:02 +00:00
|
|
|
if ($n == 0)
|
|
|
|
$page = require("public/home.php");
|
2014-01-20 08:58:01 +00:00
|
|
|
else if ($n && $p[0] == "errors")
|
|
|
|
{
|
|
|
|
$template->assign("err", intval($p[1]));
|
|
|
|
$page = "err";
|
|
|
|
}
|
2013-10-22 06:16:02 +00:00
|
|
|
else if ($n == 1)
|
2013-10-09 13:40:23 +00:00
|
|
|
{
|
2013-10-26 06:59:59 +00:00
|
|
|
$TEAM = intval(substr($p[0], 0, strpos($p[0], "-")));
|
2013-10-09 15:51:12 +00:00
|
|
|
|
2014-01-14 15:11:59 +00:00
|
|
|
if (!empty($TEAM))
|
|
|
|
$page = require("public/score.php");
|
|
|
|
else
|
|
|
|
$page = require("public/rank.php");
|
2013-10-09 13:40:23 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-10-22 06:16:02 +00:00
|
|
|
// No page here...?
|
2013-11-08 14:47:55 +00:00
|
|
|
if (empty($page) || $page == "404" || ! file_exists(ONYX . "/tpl/bootstrap/".$page.".tpl"))
|
2013-10-09 13:40:23 +00:00
|
|
|
{
|
|
|
|
$template->assign("err", 404);
|
2014-01-20 08:58:01 +00:00
|
|
|
$template->display("err.tpl");
|
2013-10-09 13:40:23 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
$template->display($page.".tpl");
|