aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Zotlabs/Module/Snap.php93
-rw-r--r--include/api.php19
2 files changed, 109 insertions, 3 deletions
diff --git a/Zotlabs/Module/Snap.php b/Zotlabs/Module/Snap.php
new file mode 100644
index 000000000..742d88617
--- /dev/null
+++ b/Zotlabs/Module/Snap.php
@@ -0,0 +1,93 @@
+<?php
+
+namespace Zotlabs\Module;
+
+/**
+ * @brief Initialize Hubzilla's cloud (SabreDAV).
+ *
+ * Module for accessing the DAV storage area from a DAV client.
+ */
+
+use \Sabre\DAV as SDAV;
+use \Zotlabs\Storage;
+
+// composer autoloader for SabreDAV
+require_once('vendor/autoload.php');
+
+
+/**
+ * @brief Fires up the SabreDAV server.
+ *
+ * @param App &$a
+ */
+
+class Snap extends \Zotlabs\Web\Controller {
+
+ function init() {
+
+ // workaround for HTTP-auth in CGI mode
+ if (x($_SERVER, 'REDIRECT_REMOTE_USER')) {
+ $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)) ;
+ if(strlen($userpass)) {
+ list($name, $password) = explode(':', $userpass);
+ $_SERVER['PHP_AUTH_USER'] = $name;
+ $_SERVER['PHP_AUTH_PW'] = $password;
+ }
+ }
+
+ if (x($_SERVER, 'HTTP_AUTHORIZATION')) {
+ $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)) ;
+ if(strlen($userpass)) {
+ list($name, $password) = explode(':', $userpass);
+ $_SERVER['PHP_AUTH_USER'] = $name;
+ $_SERVER['PHP_AUTH_PW'] = $password;
+ }
+ }
+
+ if (! is_dir('store'))
+ os_mkdir('store', STORAGE_DEFAULT_PERMISSIONS, false);
+
+ $which = null;
+ if (argc() > 1)
+ $which = argv(1);
+
+ $profile = 0;
+
+ if($which)
+ profile_load( $which, $profile);
+ else
+ killme();
+
+ $auth = new \Zotlabs\Storage\BasicAuth();
+ $auth->setRealm(ucfirst(\Zotlabs\Lib\System::get_platform_name()) . 'WebDAV');
+
+ $rootDirectory = new SDAV\FS\Directory("store");
+
+ // The server object is responsible for making sense out of the WebDAV protocol
+ $server = new SDAV\Server($rootDirectory);
+
+ $authPlugin = new \Sabre\DAV\Auth\Plugin($auth);
+ $server->addPlugin($authPlugin);
+
+ // If your server is not on your webroot, make sure the following line has the
+ // correct information
+ $server->setBaseUri('/snap');
+
+ // The lock manager is reponsible for making sure users don't overwrite
+ // each others changes.
+ $lockBackend = new SDAV\Locks\Backend\File('store/[data]/locks');
+ $lockPlugin = new SDAV\Locks\Plugin($lockBackend);
+ $server->addPlugin($lockPlugin);
+
+ // This ensures that we get a pretty index in the browser, but it is
+ // optional.
+
+// $server->addPlugin(new SDAV\Browser\Plugin());
+
+ // All we need to do now, is to fire up the server
+ $server->exec();
+ killme();
+
+ }
+
+}
diff --git a/include/api.php b/include/api.php
index ad8e9d572..c14b3df28 100644
--- a/include/api.php
+++ b/include/api.php
@@ -536,9 +536,6 @@ require_once('include/api_auth.php');
api_register_func('api/z/1.0/files','api_attach_list', true);
-
-
-
function api_file_meta($type) {
if (api_user()===false) return false;
if(! $_REQUEST['file_id']) return false;
@@ -601,7 +598,19 @@ require_once('include/api_auth.php');
api_register_func('api/red/filedata', 'api_file_data', true);
api_register_func('api/z/1.0/filedata', 'api_file_data', true);
+ function api_file_export($type) {
+ if (api_user()===false) return false;
+ if(! $_REQUEST['file_id']) return false;
+
+ $ret = attach_export_data(api_user(),$_REQUEST['file_id']);
+ if($ret) {
+ json_return_and_die($ret);
+ }
+ killme();
+ }
+ api_register_func('api/red/file/export', 'api_file_export', true);
+ api_register_func('api/z/1.0/file/export', 'api_file_export', true);
function api_file_detail($type) {
if (api_user()===false) return false;
@@ -624,6 +633,10 @@ require_once('include/api_auth.php');
killme();
}
+
+
+
+
api_register_func('api/red/file', 'api_file_detail', true);
api_register_func('api/z/1.0/file', 'api_file_detail', true);