diff options
author | Bjoern Schiessle <schiessle@owncloud.com> | 2012-07-04 17:16:02 +0200 |
---|---|---|
committer | Bjoern Schiessle <schiessle@owncloud.com> | 2012-07-04 17:18:36 +0200 |
commit | 5d61b85a1dace6ebb41025deaad019af8b3e5145 (patch) | |
tree | 1302e8d80c5942bf4bb741d8b8257b9ce26471da /apps | |
parent | b2eac08ad3a279ab81c508929c68d947bedbc9da (diff) | |
download | nextcloud-server-5d61b85a1dace6ebb41025deaad019af8b3e5145.tar.gz nextcloud-server-5d61b85a1dace6ebb41025deaad019af8b3e5145.zip |
allow users to upload ssl root certificates for the webdav client
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files_external/ajax/addRootCertificate.php | 12 | ||||
-rw-r--r-- | apps/files_external/ajax/removeRootCertificate.php | 9 | ||||
-rw-r--r-- | apps/files_external/js/settings.js | 10 | ||||
-rwxr-xr-x | apps/files_external/lib/config.php | 15 | ||||
-rwxr-xr-x | apps/files_external/personal.php | 1 | ||||
-rw-r--r-- | apps/files_external/templates/settings.php | 25 |
6 files changed, 66 insertions, 6 deletions
diff --git a/apps/files_external/ajax/addRootCertificate.php b/apps/files_external/ajax/addRootCertificate.php new file mode 100644 index 00000000000..33cd64d2c7a --- /dev/null +++ b/apps/files_external/ajax/addRootCertificate.php @@ -0,0 +1,12 @@ +<?php + +OCP\JSON::checkAppEnabled('files_external'); + +$view = \OCP\Files::getStorage("files_external"); +$from = $_FILES['rootcert_import']['tmp_name']; +$to = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath("").$_FILES['rootcert_import']['name']; +move_uploaded_file($from, $to); + +header("Location: settings/personal.php"); +exit; +?>
\ No newline at end of file diff --git a/apps/files_external/ajax/removeRootCertificate.php b/apps/files_external/ajax/removeRootCertificate.php new file mode 100644 index 00000000000..05f2fdef2d1 --- /dev/null +++ b/apps/files_external/ajax/removeRootCertificate.php @@ -0,0 +1,9 @@ +<?php + +OCP\JSON::checkAppEnabled('files_external'); + +$view = \OCP\Files::getStorage("files_external"); +$cert = $_POST['cert']; +$file = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath("").$cert; +unlink($file); +?>
\ No newline at end of file diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js index 1c366a79c7a..0d942e7845b 100644 --- a/apps/files_external/js/settings.js +++ b/apps/files_external/js/settings.js @@ -1,4 +1,4 @@ -OC.MountConfig={ +OC.MountConfig={ saveStorage:function(tr) { var mountPoint = $(tr).find('.mountPoint input').val(); if (mountPoint == '') { @@ -68,7 +68,6 @@ OC.MountConfig={ } $(document).ready(function() { - $('.chzn-select').chosen(); $('#selectBackend').live('change', function() { @@ -116,8 +115,11 @@ $(document).ready(function() { $('td.remove>img').live('click', function() { var tr = $(this).parent().parent(); var mountPoint = $(tr).find('.mountPoint input').val(); - if (mountPoint == '') { - return false; + if (!mountPoint) { + var row=this.parentNode.parentNode; + $.post(OC.filePath('files_external', 'ajax', 'removeRootCertificate.php'), { cert: row.id }); + $(tr).remove(); + return true; } if ($('#externalStorage').data('admin') === true) { var isPersonal = false; diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php index 95f8beeb49e..4e82e6b2548 100755 --- a/apps/files_external/lib/config.php +++ b/apps/files_external/lib/config.php @@ -237,6 +237,21 @@ class OC_Mount_Config { $content .= ");\n?>"; @file_put_contents($file, $content); } + + /**
+ * Returns all user uploaded ssl root certificates
+ * @return array
+ */
+ public static function getCertificates() { + $view = \OCP\Files::getStorage('files_external'); + $path=\OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath(""); + $result = array(); + $handle = opendir($path); + while (false !== ($file = readdir($handle))) { + if($file != '.' && $file != '..') $result[] = $file; + } + return $result; + } } diff --git a/apps/files_external/personal.php b/apps/files_external/personal.php index b758e7e7eb0..dec501741b6 100755 --- a/apps/files_external/personal.php +++ b/apps/files_external/personal.php @@ -28,6 +28,7 @@ unset($backends['OC_Filestorage_Local']); $tmpl = new OCP\Template('files_external', 'settings'); $tmpl->assign('isAdminPage', false, false); $tmpl->assign('mounts', OC_Mount_Config::getPersonalMountPoints()); +$tmpl->assign('certs', OC_Mount_Config::getCertificates()); $tmpl->assign('backends', $backends); return $tmpl->fetchPage(); diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php index e651c4574d7..be86033d208 100644 --- a/apps/files_external/templates/settings.php +++ b/apps/files_external/templates/settings.php @@ -1,4 +1,4 @@ -<form id="files_external"> +<form id="files_external" method="post" enctype="multipart/form-data" action="/owncloud/?app=files_external&getfile=ajax%2FaddRootCertificate.php"> <fieldset class="personalblock"> <legend><strong><?php echo $l->t('External Storage'); ?></strong></legend> <table id="externalStorage" data-admin='<?php echo json_encode($_['isAdminPage']); ?>'> @@ -79,6 +79,27 @@ <?php endforeach; ?> </tbody> </table> + <br /> + + <table id="sslCertificate" data-admin='<?php echo json_encode($_['isAdminPage']); ?>'> + <thead> + <tr> + <th><?php echo $l->t('SSL root certificates'); ?></th> + <th> </th> + </tr> + </thead> + <tbody width="100%"> + <?php foreach ($_['certs'] as $rootCert): ?> + <tr id="<?php echo $rootCert ?>"> + <td class="rootCert"><?php echo $rootCert ?></td> + <td <?php echo ($rootCert != '') ? 'class="remove"' : 'style="visibility:hidden;"'; ?>><img alt="<?php echo $l->t('Delete'); ?>" title="<?php echo $l->t('Delete'); ?>" class="svg action" src="<?php echo image_path('core', 'actions/delete.svg'); ?>" /></td> + </tr> + <?php endforeach; ?> + </tbody> + </table> + <input type="file" id="rootcert_import" name="rootcert_import" style="width:230px;"> + <input type="submit" name="cert_import" value="<?php echo $l->t('Import Root Certificate'); ?>" /> + <?php if ($_['isAdminPage']): ?> <br /> <input type="checkbox" name="allowUserMounting" id="allowUserMounting" value="1" <?php if ($_['allowUserMounting'] == 'yes') echo ' checked="checked"'; ?> /> @@ -86,4 +107,4 @@ <em><?php echo $l->t('Allow users to mount their own external storage'); ?></em> <?php endif; ?> </fieldset> -</form>
\ No newline at end of file +</form> |