server/apps/files_external/ajax/addRootCertificate.php

46 lines
1.3 KiB
PHP
Raw Normal View History

<?php
OCP\JSON::checkAppEnabled('files_external');
2013-02-12 10:35:16 +00:00
OCP\JSON::callCheck();
if ( ! ($filename = $_FILES['rootcert_import']['name']) ) {
2012-10-10 11:18:36 +00:00
header("Location: settings/personal.php");
exit;
}
2012-10-10 11:18:36 +00:00
$fh = fopen($_FILES['rootcert_import']['tmp_name'], 'r');
$data = fread($fh, filesize($_FILES['rootcert_import']['tmp_name']));
fclose($fh);
$filename = $_FILES['rootcert_import']['name'];
2012-10-10 11:18:36 +00:00
$view = new \OC\Files\View('/'.\OCP\User::getUser().'/files_external/uploads');
2013-02-09 15:46:55 +00:00
if (!$view->file_exists('')) {
2012-12-03 17:02:22 +00:00
$view->mkdir('');
}
$isValid = openssl_pkey_get_public($data);
//maybe it was just the wrong file format, try to convert it...
if ($isValid == false) {
2012-10-10 11:18:36 +00:00
$data = chunk_split(base64_encode($data), 64, "\n");
$data = "-----BEGIN CERTIFICATE-----\n".$data."-----END CERTIFICATE-----\n";
$isValid = openssl_pkey_get_public($data);
}
// add the certificate if it could be verified
if ( $isValid ) {
// disable proxy to prevent multiple fopen calls
$proxyStatus = \OC_FileProxy::$enabled;
\OC_FileProxy::$enabled = false;
$view->file_put_contents($filename, $data);
OC_Mount_Config::createCertificateBundle();
\OC_FileProxy::$enabled = $proxyStatus;
} else {
OCP\Util::writeLog('files_external',
'Couldn\'t import SSL root certificate ('.$filename.'), allowed formats: PEM and DER',
OCP\Util::WARN);
}
2013-02-18 13:38:29 +00:00
header('Location:' . OCP\Util::linkToRoute( "settings_personal" ));
exit;