server/onyx/include/admin/certificate.php

74 lines
1.5 KiB
PHP

<?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);
}
}
function new_client($name, $misc_dir)
{
//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");
return $output;
}
if (!empty($p[2]))
{
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'];
if ($p[2] == "newca")
{
putenv("OPENSSL_CONF=$misc_dir/openssl.cnf");
putenv("TOP_DIR=$misc_dir/pki");
$output = shell_exec("$misc_dir/CA.sh -newca");
$ca_file = "$misc_dir/pki/cacert.crt";
//TODO check permission ?
if (file_exists($ca_file))
{
$data = openssl_x509_parse(file_get_contents("$misc_dir/pki/cacert.crt"));
$template->assign("cert", $data);
}
}
elseif ($p[2] == "deleteca")
{
$dir = "$misc_dir/pki";
remove_directory($dir);
}
if ($p[2] == "deleteca" || $p[2] == "newca")
{
header("Location: /admin/");
exit;
}
}