summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorBjoern Schiessle <schiessle@owncloud.com>2012-07-04 17:16:02 +0200
committerBjoern Schiessle <schiessle@owncloud.com>2012-07-04 17:18:36 +0200
commit5d61b85a1dace6ebb41025deaad019af8b3e5145 (patch)
tree1302e8d80c5942bf4bb741d8b8257b9ce26471da /apps
parentb2eac08ad3a279ab81c508929c68d947bedbc9da (diff)
downloadnextcloud-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.php12
-rw-r--r--apps/files_external/ajax/removeRootCertificate.php9
-rw-r--r--apps/files_external/js/settings.js10
-rwxr-xr-xapps/files_external/lib/config.php15
-rwxr-xr-xapps/files_external/personal.php1
-rw-r--r--apps/files_external/templates/settings.php25
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>&nbsp;</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>