2013-11-12 19:24:34 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
if (!defined('ONYX')) exit;
|
|
|
|
|
|
|
|
function remove_directory($dir)
|
|
|
|
{
|
|
|
|
if (is_dir($dir))
|
|
|
|
{
|
|
|
|
$objects = scandir($dir);
|
|
|
|
foreach ($objects as $object)
|
|
|
|
{
|
|
|
|
if ($object != "." && $object != "..")
|
|
|
|
{
|
|
|
|
if (filetype($dir."/".$object) == "dir")
|
|
|
|
remove_directory($dir."/".$object);
|
|
|
|
else
|
|
|
|
unlink($dir."/".$object);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
reset($objects);
|
|
|
|
rmdir($dir);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-11-25 18:18:51 +00:00
|
|
|
function new_client($name, $misc_dir)
|
2013-11-12 21:41:10 +00:00
|
|
|
{
|
2013-11-25 17:24:46 +00:00
|
|
|
//TODO handle if already exist
|
|
|
|
putenv("OPENSSL_CONF=$misc_dir/openssl.cnf");
|
|
|
|
putenv("TOP_DIR=$misc_dir/pki");
|
|
|
|
$output = shell_exec("$misc_dir/CA.sh -newclient $name");
|
2013-11-25 18:36:28 +00:00
|
|
|
return $output;
|
2013-11-12 21:41:10 +00:00
|
|
|
}
|
|
|
|
|
2013-12-01 18:40:47 +00:00
|
|
|
function revoke_client($name, $misc_dir)
|
|
|
|
{
|
|
|
|
putenv("OPENSSL_CONF=$misc_dir/openssl.cnf");
|
|
|
|
putenv("TOP_DIR=$misc_dir/pki");
|
|
|
|
$output = shell_exec("$misc_dir/CA.sh -revoke $name");
|
|
|
|
}
|
|
|
|
|
2013-11-25 14:38:06 +00:00
|
|
|
if (!empty($p[2]))
|
2013-11-12 21:41:10 +00:00
|
|
|
{
|
2013-11-25 17:24:46 +00:00
|
|
|
if (isset($VAR['misc_dir']))
|
|
|
|
$misc_dir = $VAR['misc_dir'];
|
|
|
|
else
|
|
|
|
{
|
|
|
|
erreur("Merci d'ajouter la variable misc_dir dans root.xml");
|
|
|
|
return "admin/home";
|
|
|
|
}
|
|
|
|
|
|
|
|
$misc_dir = $VAR['misc_dir'];
|
|
|
|
|
2013-11-25 14:38:06 +00:00
|
|
|
if ($p[2] == "newca")
|
|
|
|
{
|
2013-11-25 17:24:46 +00:00
|
|
|
putenv("OPENSSL_CONF=$misc_dir/openssl.cnf");
|
|
|
|
putenv("TOP_DIR=$misc_dir/pki");
|
|
|
|
$output = shell_exec("$misc_dir/CA.sh -newca");
|
2013-11-25 14:38:06 +00:00
|
|
|
}
|
2013-11-12 21:41:10 +00:00
|
|
|
|
2013-11-25 14:38:06 +00:00
|
|
|
elseif ($p[2] == "deleteca")
|
|
|
|
{
|
2013-11-25 17:24:46 +00:00
|
|
|
$dir = "$misc_dir/pki";
|
2013-11-12 19:24:34 +00:00
|
|
|
remove_directory($dir);
|
2013-11-25 14:38:06 +00:00
|
|
|
}
|
2013-11-30 20:31:18 +00:00
|
|
|
elseif ($p[2] == "revoke")
|
|
|
|
{
|
|
|
|
$name = $_GET['name'];
|
|
|
|
if (isset($name))
|
|
|
|
{
|
2013-12-01 18:40:47 +00:00
|
|
|
$output = revoke_client($name, $misc_dir);
|
|
|
|
//TODO Check revocation failed
|
|
|
|
Team::set_revoked(TRUE, $name);
|
2013-11-30 20:31:18 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
// Is new team
|
|
|
|
elseif ($p[2] == "newclient")
|
|
|
|
{
|
|
|
|
$name = $_GET['name'];
|
|
|
|
//TODO handle error
|
|
|
|
//TODO check revoked attribute
|
|
|
|
if (isset($name))
|
|
|
|
{
|
2013-12-11 17:11:32 +00:00
|
|
|
$output = new_client($name, $misc_dir);
|
2013-11-30 20:31:18 +00:00
|
|
|
Team::set_revoked(FALSE, $name);
|
2013-12-11 17:11:32 +00:00
|
|
|
erreur($output, "sucess");
|
|
|
|
return "admin/import_users";
|
2013-11-30 20:31:18 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
elseif ($p[2] == "get")
|
|
|
|
{
|
|
|
|
$name = $_GET['name'];
|
|
|
|
if (isset($name))
|
|
|
|
{
|
|
|
|
$path = "$misc_dir/pki/pkcs/$name.p12";
|
|
|
|
if (file_exists($path) && is_readable($path))
|
|
|
|
{
|
|
|
|
header("Content-Type: application/force-download");
|
|
|
|
header("Content-Length: ".strval(filesize($path)));
|
|
|
|
header("Content-Disposition: attachment; filename=\"$name.p12\"");
|
|
|
|
readfile($path);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
exit;
|
|
|
|
}
|
2013-11-25 18:02:49 +00:00
|
|
|
|
|
|
|
if ($p[2] == "deleteca" || $p[2] == "newca")
|
|
|
|
{
|
2013-11-30 12:55:42 +00:00
|
|
|
header("Location: /".SALT_ADMIN."/");
|
2013-11-25 18:02:49 +00:00
|
|
|
exit;
|
|
|
|
}
|
2013-11-30 20:31:18 +00:00
|
|
|
elseif ($p[2] == "revoke" || $p[2] == "newclient")
|
|
|
|
{
|
|
|
|
header("Location: /".SALT_ADMIN."/teams");
|
|
|
|
exit;
|
|
|
|
}
|
2013-11-12 19:24:34 +00:00
|
|
|
}
|
|
|
|
|