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