/** * Prepare * Call from elFinder::netmout() before volume->mount() * * @param $options * @return Array * @author Naoki Sawada */ public function netmountPrepare($options) { if (empty($options['consumerKey']) && defined('ELFINDER_DROPBOX_CONSUMERKEY')) { $options['consumerKey'] = ELFINDER_DROPBOX_CONSUMERKEY; } if (empty($options['consumerSecret']) && defined('ELFINDER_DROPBOX_CONSUMERSECRET')) { $options['consumerSecret'] = ELFINDER_DROPBOX_CONSUMERSECRET; } if ($options['user'] === 'init') { if (!$this->dropbox_phpFound || empty($options['consumerKey']) || empty($options['consumerSecret']) || !class_exists('PDO', false)) { return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}'); } if (defined('ELFINDER_DROPBOX_USE_CURL_PUT')) { $this->oauth = new Dropbox_OAuth_Curl($options['consumerKey'], $options['consumerSecret']); } else { if (class_exists('OAuth', false)) { $this->oauth = new Dropbox_OAuth_PHP($options['consumerKey'], $options['consumerSecret']); } else { if (!class_exists('HTTP_OAuth_Consumer')) { // We're going to try to load in manually include 'HTTP/OAuth/Consumer.php'; } if (class_exists('HTTP_OAuth_Consumer', false)) { $this->oauth = new Dropbox_OAuth_PEAR($options['consumerKey'], $options['consumerSecret']); } } } if (!$this->oauth) { return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}'); } if ($options['pass'] === 'init') { $html = ''; if ($sessionToken = $this->session->get('DropboxTokens')) { // token check try { list(, $accessToken, $accessTokenSecret) = $sessionToken; $this->oauth->setToken($accessToken, $accessTokenSecret); $this->dropbox = new Dropbox_API($this->oauth, $this->options['root']); $this->dropbox->getAccountInfo(); $script = '<script> $("#' . $options['id'] . '").elfinder("instance").trigger("netmount", {protocol: "dropbox", mode: "done"}); </script>'; $html = $script; } catch (Dropbox_Exception $e) { $this->session->remove('DropboxTokens'); } } if (!$html) { // get customdata $cdata = ''; $innerKeys = array('cmd', 'host', 'options', 'pass', 'protocol', 'user'); $this->ARGS = $_SERVER['REQUEST_METHOD'] === 'POST' ? $_POST : $_GET; foreach ($this->ARGS as $k => $v) { if (!in_array($k, $innerKeys)) { $cdata .= '&' . $k . '=' . rawurlencode($v); } } if (strpos($options['url'], 'http') !== 0) { $options['url'] = elFinder::getConnectorUrl(); } $callback = $options['url'] . '?cmd=netmount&protocol=dropbox&host=dropbox.com&user=init&pass=return&node=' . $options['id'] . $cdata; try { $tokens = $this->oauth->getRequestToken(); $url = $this->oauth->getAuthorizeUrl(rawurlencode($callback)); } catch (Dropbox_Exception $e) { return array('exit' => true, 'body' => '{msg:errAccess}'); } $this->session->set('DropboxAuthTokens', $tokens); $html = '<input id="elf-volumedriver-dropbox-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button" onclick="window.open(\'' . $url . '\')">'; $html .= '<script> $("#' . $options['id'] . '").elfinder("instance").trigger("netmount", {protocol: "dropbox", mode: "makebtn"}); </script>'; } return array('exit' => true, 'body' => $html); } else { $this->oauth->setToken($this->session->get('DropboxAuthTokens')); $this->session->remove('DropboxAuthTokens'); $tokens = $this->oauth->getAccessToken(); $this->session->set('DropboxTokens', array($_GET['uid'], $tokens['token'], $tokens['token_secret'])); $out = array('node' => $_GET['node'], 'json' => '{"protocol": "dropbox", "mode": "done"}', 'bind' => 'netmount'); return array('exit' => 'callback', 'out' => $out); } } if ($sessionToken = $this->session->get('DropboxTokens')) { list($options['dropboxUid'], $options['accessToken'], $options['accessTokenSecret']) = $sessionToken; } unset($options['user'], $options['pass']); return $options; }
/** * Prepare * Call from elFinder::netmout() before volume->mount() * * @return Array * @author Naoki Sawada **/ public function netmountPrepare($options) { if (empty($options['consumerKey']) && defined('ELFINDER_DROPBOX_CONSUMERKEY')) { $options['consumerKey'] = ELFINDER_DROPBOX_CONSUMERKEY; } if (empty($options['consumerSecret']) && defined('ELFINDER_DROPBOX_CONSUMERSECRET')) { $options['consumerSecret'] = ELFINDER_DROPBOX_CONSUMERSECRET; } if (true || $options['user'] === 'init') { if (empty($options['consumerKey']) || empty($options['consumerSecret'])) { return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}'); } set_include_path($_SERVER['DOCUMENT_ROOT'] . $_SESSION['QOOL_FOLDER'] . 'lib/'); require_once "Dropbox/OAuth/Zend.php"; $this->oauth = new Dropbox_OAuth_Zend($options['consumerKey'], $options['consumerSecret']); if (!$this->oauth) { return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}'); } if (true || $options['pass'] === 'init') { $html = ''; if (isset($_SESSION['elFinderDropboxTokens'])) { // token check try { list(, $accessToken, $accessTokenSecret) = $_SESSION['elFinderDropboxTokens']; $this->oauth->setToken($accessToken, $accessTokenSecret); $this->dropbox = new Dropbox_API($this->oauth, $this->options['root']); $this->dropbox->getAccountInfo(); $script = '<script> $("#elfinder-cmd-netmout-dropbox-host").html("Dropbox.com"); $("#elfinder-cmd-netmout-dropbox-user").val("done"); $("#elfinder-cmd-netmout-dropbox-pass").val("done"); </script>'; $html = 'Dropbox.com' . $script; } catch (Dropbox_Exception $e) { unset($_SESSION['elFinderDropboxTokens']); } } if (!$html) { if (strpos($options['url'], 'http') !== 0) { $options['url'] = $this->getConnectorUrl(); } $callback = $options['url'] . '?cmd=netmount&protocol=dropbox&host=dropbox.com&user=init&pass=return'; try { $tokens = $this->oauth->getRequestToken(); $url = $this->oauth->getAuthorizeUrl(rawurlencode($callback)); } catch (Dropbox_Exception $e) { return array('exit' => true, 'body' => '{msg:errAccess}'); } $_SESSION['elFinderDropboxAuthTokens'] = $tokens; $html = '<input class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button" onclick="window.open(\'' . $url . '\')">'; } return array('exit' => true, 'body' => $html); } else { $this->oauth->setToken($_SESSION['elFinderDropboxAuthTokens']); unset($_SESSION['elFinderDropboxAuthTokens']); $tokens = $this->oauth->getAccessToken(); $_SESSION['elFinderDropboxTokens'] = array($_GET['uid'], $tokens['token'], $tokens['token_secret']); $script = ' var p = window.opener; p.$("#elfinder-cmd-netmout-dropbox-host").html("Dropbox.com"); p.$("#elfinder-cmd-netmout-dropbox-user").val("done"); p.$("#elfinder-cmd-netmout-dropbox-pass").val("done"); window.close();'; $out = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script>' . $script . '</script></head><body><a href="#" onlick="window.close();return false;">Close this window</a></body></html>'; while (ob_get_level()) { if (!ob_end_clean()) { break; } } header('Content-Type: text/html; charset=utf-8'); header('Content-Length: ' . strlen($out)); header('Cache-Control: private'); header('Pragma: no-cache'); echo $out; exit; } } if (isset($_SESSION['elFinderDropboxTokens'])) { list($options['dropboxUid'], $options['accessToken'], $options['accessTokenSecret']) = $_SESSION['elFinderDropboxTokens']; } unset($options['user'], $options['pass']); return $options; }
/** * Prepare * Call from elFinder::netmout() before volume->mount() * * @return Array * @author Naoki Sawada **/ public function netmountPrepare($options) { if (empty($options['consumerKey']) && defined('ELFINDER_DROPBOX_CONSUMERKEY')) { $options['consumerKey'] = ELFINDER_DROPBOX_CONSUMERKEY; } if (empty($options['consumerSecret']) && defined('ELFINDER_DROPBOX_CONSUMERSECRET')) { $options['consumerSecret'] = ELFINDER_DROPBOX_CONSUMERSECRET; } if ($options['user'] === 'init') { if (!$this->dropbox_phpFound || empty($options['consumerKey']) || empty($options['consumerSecret'])) { return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}'); } if (class_exists('OAuth')) { $this->oauth = new Dropbox_OAuth_PHP($options['consumerKey'], $options['consumerSecret']); } else { if (!class_exists('HTTP_OAuth_Consumer')) { // We're going to try to load in manually include 'HTTP/OAuth/Consumer.php'; } if (class_exists('HTTP_OAuth_Consumer')) { $this->oauth = new Dropbox_OAuth_PEAR($options['consumerKey'], $options['consumerSecret']); } } if (!$this->oauth) { return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}'); } if ($options['pass'] === 'init') { $html = ''; if (isset($_SESSION['elFinderDropboxTokens'])) { // token check try { list(, $accessToken, $accessTokenSecret) = $_SESSION['elFinderDropboxTokens']; $this->oauth->setToken($accessToken, $accessTokenSecret); $this->dropbox = new Dropbox_API($this->oauth, $this->options['root']); $this->dropbox->getAccountInfo(); $script = '<script> $("#elfinder-cmd-netmout-dropbox-host").html("Dropbox.com"); $("#elfinder-cmd-netmout-dropbox-user").val("done"); $("#elfinder-cmd-netmout-dropbox-pass").val("done"); </script>'; $html = 'Dropbox.com' . $script; } catch (Dropbox_Exception $e) { unset($_SESSION['elFinderDropboxTokens']); } } if (!$html) { // get customdata $cdata = ''; $innerKeys = array('cmd', 'host', 'options', 'pass', 'protocol', 'user'); $post = strtolower($_SERVER['REQUEST_METHOD']) === 'post' ? $_POST : $_GET; foreach ($post as $k => $v) { if (!in_array($k, $innerKeys)) { $cdata .= '&' . $k . '=' . rawurlencode($v); } } if (strpos($options['url'], 'http') !== 0) { $options['url'] = $this->getConnectorUrl(); } $callback = $options['url'] . '?cmd=netmount&protocol=dropbox&host=dropbox.com&user=init&pass=return' . $cdata; try { $tokens = $this->oauth->getRequestToken(); $url = $this->oauth->getAuthorizeUrl(rawurlencode($callback)); } catch (Dropbox_Exception $e) { return array('exit' => true, 'body' => '{msg:errAccess}'); } $_SESSION['elFinderDropboxAuthTokens'] = $tokens; $html = '<input class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button" onclick="window.open(\'' . $url . '\')">'; } return array('exit' => true, 'body' => $html); } else { $this->oauth->setToken($_SESSION['elFinderDropboxAuthTokens']); unset($_SESSION['elFinderDropboxAuthTokens']); $tokens = $this->oauth->getAccessToken(); $_SESSION['elFinderDropboxTokens'] = array($_GET['uid'], $tokens['token'], $tokens['token_secret']); $script = ' var p = window.opener; p.$("#elfinder-cmd-netmout-dropbox-host").html("Dropbox.com"); p.$("#elfinder-cmd-netmout-dropbox-user").val("done"); p.$("#elfinder-cmd-netmout-dropbox-pass").val("done"); window.close();'; $out = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script>' . $script . '</script></head><body><a href="#" onlick="window.close();return false;">Close this window</a></body></html>'; while (ob_get_level()) { if (!ob_end_clean()) { break; } } header('Content-Type: text/html; charset=utf-8'); header('Content-Length: ' . strlen($out)); header('Cache-Control: private'); header('Pragma: no-cache'); echo $out; exit; } } if (isset($_SESSION['elFinderDropboxTokens'])) { list($options['dropboxUid'], $options['accessToken'], $options['accessTokenSecret']) = $_SESSION['elFinderDropboxTokens']; } unset($options['user'], $options['pass']); return $options; }