本文整理汇总了PHP中AJXP_Utils::safeParseUrl方法的典型用法代码示例。如果您正苦于以下问题:PHP AJXP_Utils::safeParseUrl方法的具体用法?PHP AJXP_Utils::safeParseUrl怎么用?PHP AJXP_Utils::safeParseUrl使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AJXP_Utils
的用法示例。
在下文中一共展示了AJXP_Utils::safeParseUrl方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: initPath
/**
* Initialize the stream from the given path.
* Concretely, transform ajxp.webdav:// into webdav://
*
* @param string $path
* @return mixed Real path or -1 if currentListing contains the listing : original path converted to real path
*/
protected static function initPath($path, $streamType, $storeOpenContext = false, $skipZip = false)
{
$url = AJXP_Utils::safeParseUrl($path);
$repoId = $url["host"];
$repoObject = ConfService::getRepositoryById($repoId);
if (!isset($repoObject)) {
$e = new Exception("Cannot find repository with id " . $repoId);
self::$lastException = $e;
throw $e;
}
if (self::$cloudContext == null) {
self::$cloudContext = stream_context_create(array("swiftfs" => array('username' => $repoObject->getOption("USERNAME"), 'password' => $repoObject->getOption("PASSWORD"), 'tenantid' => $repoObject->getOption("TENANT_ID"), 'endpoint' => $repoObject->getOption("ENDPOINT"), 'openstack.swift.region' => $repoObject->getOption("REGION"))));
}
$baseContainer = $repoObject->getOption("CONTAINER");
$p = "swiftfs://" . $baseContainer . str_replace("//", "/", $url["path"]);
return $p;
}
示例2: initPath
/**
* Initialize the stream from the given path.
* Concretely, transform ajxp.webdav:// into webdav://
*
* @param string $path
* @return mixed Real path or -1 if currentListing contains the listing : original path converted to real path
*/
protected static function initPath($path, $streamType, $storeOpenContext = false, $skipZip = false)
{
$url = AJXP_Utils::safeParseUrl($path);
$repoId = $url["host"];
$repoObject = ConfService::getRepositoryById($repoId);
if (!isset($repoObject)) {
$e = new Exception("Cannot find repository with id " . $repoId);
self::$lastException = $e;
throw $e;
}
$path = $url["path"];
$host = $repoObject->getOption("HOST");
$hostParts = parse_url($host);
if ($hostParts["scheme"] == "https" && !extension_loaded("openssl")) {
$e = new Exception("Warning you must have the openssl PHP extension loaded to connect an https server!");
self::$lastException = $e;
throw $e;
}
$credentials = AJXP_Safe::tryLoadingCredentialsFromSources($hostParts, $repoObject);
$user = $credentials["user"];
$password = $credentials["password"];
if ($user != null && $password != null) {
$host = ($hostParts["scheme"] == "https" ? "webdavs" : "webdav") . "://{$user}:{$password}@" . $hostParts["host"];
if (isset($hostParts["port"])) {
$host .= ":" . $hostParts["port"];
}
} else {
$host = str_replace(array("http", "https"), array("webdav", "webdavs"), $host);
}
// MAKE SURE THERE ARE NO // OR PROBLEMS LIKE THAT...
$basePath = $repoObject->getOption("PATH");
if ($basePath[strlen($basePath) - 1] == "/") {
$basePath = substr($basePath, 0, -1);
}
if ($basePath[0] != "/") {
$basePath = "/{$basePath}";
}
$path = AJXP_Utils::securePath($path);
if ($path[0] == "/") {
$path = substr($path, 1);
}
// SHOULD RETURN webdav://host_server/uri/to/webdav/folder
AJXP_Logger::debug(__CLASS__, __FUNCTION__, $host . $basePath . "/" . $path);
return $host . $basePath . "/" . $path;
}
示例3: initPath
public function initPath($ajxpPath)
{
$repo = ConfService::getRepository();
if (empty(self::$dropbox)) {
$consumerKey = $repo->getOption('CONSUMER_KEY');
$consumerSecret = $repo->getOption('CONSUMER_SECRET');
self::$oauth = new Dropbox_OAuth_PEAR($consumerKey, $consumerSecret);
self::$oauth->setToken($_SESSION["OAUTH_DROPBOX_TOKENS"]);
self::$dropbox = new Dropbox_API(self::$oauth);
}
$basePath = $repo->getOption("PATH");
if (empty($basePath)) {
$basePath = "";
}
$parts = AJXP_Utils::safeParseUrl($ajxpPath);
$path = $basePath . "/" . ltrim($parts["path"], "/");
if ($path == "") {
return "/";
}
return $path;
}
示例4: initPath
/**
* Initialize the stream from the given path.
* Concretely, transform ajxp.smb:// into smb://
*
* @param string $path
* @return mixed Real path or -1 if currentListing contains the listing : original path converted to real path
*/
protected static function initPath($path, $streamType, $storeOpenContext = false, $skipZip = false)
{
$url = AJXP_Utils::safeParseUrl($path);
$repoId = $url["host"];
$repoObject = ConfService::getRepositoryById($repoId);
if (!isset($repoObject)) {
throw new Exception("Cannot find repository with id " . $repoId);
}
$path = $url["path"];
// Fix if the host is defined as //MY_HOST/path/to/folder
$hostOption = AuthService::getFilteredRepositoryOption("access.smb", $repoObject, "HOST");
$host = str_replace("//", "", $hostOption);
$credentials = "";
$safeCreds = AJXP_Safe::tryLoadingCredentialsFromSources($url, $repoObject);
if ($safeCreds["user"] != "" && $safeCreds["password"] != "") {
$login = $safeCreds["user"];
$pass = $safeCreds["password"];
$_SESSION["AJXP_SESSION_REMOTE_PASS"] = $pass;
$credentials = "{$login}:{$pass}@";
$domain = $repoObject->getOption("DOMAIN");
if ($domain != "") {
if (strcmp(substr($domain, -1), "/") === 0 || strcmp(substr($domain, -1), "\\") === 0) {
$credentials = $domain . $credentials;
} else {
$credentials = $domain . "/" . $credentials;
}
}
}
$basePath = $repoObject->getOption("PATH");
$fullPath = "smbclient://" . $credentials . $host . "/";
//.$basePath."/".$path;
if ($basePath != "") {
$fullPath .= trim($basePath, "/\\");
}
if ($path != "") {
$fullPath .= ($path[0] == "/" ? "" : "/") . $path;
}
return $fullPath;
}
示例5: initPath
/**
* Initialize the stream from the given path.
*
* @param string $path
* @param $streamType
* @param bool $storeOpenContext
* @param bool $skipZip
* @return mixed Real path or -1 if currentListing contains the listing : original path converted to real path
* @throws AJXP_Exception
* @throws Exception
*/
protected static function initPath($path, $streamType, $storeOpenContext = false, $skipZip = false)
{
$path = self::unPatchPathForBaseDir($path);
$url = AJXP_Utils::safeParseUrl($path);
$repoId = $url["host"];
$test = trim($url["path"], "/");
$atRoot = empty($test);
$repoObject = ConfService::getRepositoryById($repoId);
if (!isset($repoObject)) {
throw new Exception("Cannot find repository with id " . $repoId);
}
$split = UserSelection::detectZip($url["path"]);
$insideZip = false;
if ($split && $streamType == "file" && $split[1] != "/") {
$insideZip = true;
}
if ($split && $streamType == "dir") {
$insideZip = true;
}
if ($skipZip) {
$insideZip = false;
}
$resolveUser = null;
if (isset($url["user"]) && AuthService::usersEnabled()) {
$resolveUser = ConfService::getConfStorageImpl()->createUserObject($url["user"]);
}
$resolvedPath = realpath(SystemTextEncoding::toStorageEncoding($repoObject->getOption("PATH", false, $resolveUser)));
//var_dump($path);
//var_dump($skipZip);
// Inside a zip : copy the file to a tmp file and return a reference to it
if ($insideZip) {
$zipPath = $split[0];
$localPath = $split[1];
require_once AJXP_BIN_FOLDER . "/pclzip.lib.php";
//print($streamType.$path);
if ($streamType == "file") {
if (self::$crtZip == null || !is_array(self::$currentListingKeys)) {
$tmpDir = AJXP_Utils::getAjxpTmpDir() . DIRECTORY_SEPARATOR . md5(time() - rand());
mkdir($tmpDir);
$tmpFileName = $tmpDir . DIRECTORY_SEPARATOR . basename($localPath);
AJXP_Logger::debug(__CLASS__, __FUNCTION__, "Tmp file {$tmpFileName}");
register_shutdown_function(array("fsAccessWrapper", "removeTmpFile"), $tmpDir, $tmpFileName);
$crtZip = new PclZip(AJXP_Utils::securePath($resolvedPath . $repoObject->resolveVirtualRoots($zipPath)));
$content = $crtZip->listContent();
if (is_array($content)) {
foreach ($content as $item) {
$fName = AJXP_Utils::securePath($item["stored_filename"]);
if ($fName == $localPath || "/" . $fName == $localPath) {
$localPath = $fName;
break;
}
}
}
$crtZip->extract(PCLZIP_OPT_BY_NAME, $localPath, PCLZIP_OPT_PATH, $tmpDir, PCLZIP_OPT_REMOVE_ALL_PATH);
AJXP_Logger::debug(__CLASS__, __FUNCTION__, "Extracted " . $path . " to " . dirname($localPath));
if ($storeOpenContext) {
self::$crtZip = $crtZip;
}
return $tmpFileName;
} else {
$key = basename($localPath);
if (array_key_exists($key, self::$currentListing)) {
self::$currentFileKey = $key;
return -1;
} else {
throw new AJXP_Exception("Cannot find key");
}
}
} else {
$crtZip = new PclZip(AJXP_Utils::securePath($resolvedPath . $repoObject->resolveVirtualRoots($zipPath)));
$liste = $crtZip->listContent();
if (!is_array($liste)) {
$liste = array();
}
if ($storeOpenContext) {
self::$crtZip = $crtZip;
}
$folders = array();
$files = array();
$builtFolders = array();
if ($localPath[strlen($localPath) - 1] != "/") {
$localPath .= "/";
}
foreach ($liste as $item) {
$stored = $item["stored_filename"];
if ($stored[0] != "/") {
$stored = "/" . $stored;
}
$pathPos = strpos($stored, $localPath);
//.........这里部分代码省略.........
示例6: buildRealUrl
protected function buildRealUrl($url)
{
if (!isset($this->user)) {
$parts = $this->parseUrl($url);
} else {
// parseUrl already called before (rename case).
$parts = AJXP_Utils::safeParseUrl($url);
}
$serverPath = AJXP_Utils::securePath("/{$this->path}/" . $parts["path"]);
return "ftp" . ($this->secure ? "s" : "") . "://{$this->user}:{$this->password}@{$this->host}:{$this->port}" . $serverPath;
}
示例7: url_stat
/**
* Stats the given path.
*
* @param string $path
* @param mixed $flags
* @return array
*/
public function url_stat($path, $flags)
{
$realPath = self::initPath($path);
$stat = @stat($realPath);
$parts = AJXP_Utils::safeParseUrl($path);
$repoObject = ConfService::getRepositoryById($parts["host"]);
AbstractAccessDriver::fixPermissions($stat, $repoObject, array($this, "detectRemoteUserId"));
return $stat;
}
示例8: getSshConnection
public static function getSshConnection($path, $repoObject = null)
{
if ($repoObject != null) {
$url = array();
} else {
$url = AJXP_Utils::safeParseUrl($path);
$repoId = $url["host"];
$repoObject = ConfService::getRepositoryById($repoId);
}
$remote_serv = $repoObject->getOption("SERV");
$remote_port = $repoObject->getOption("PORT");
$credentials = AJXP_Safe::tryLoadingCredentialsFromSources($url, $repoObject);
$remote_user = $credentials["user"];
$remote_pass = $credentials["password"];
$remote_base_path = $repoObject->getOption("PATH");
$callbacks = array('disconnect' => "disconnectedSftp", 'ignore' => "ignoreSftp", 'debug' => "debugSftp", 'macerror' => "macerrorSftp");
$connection = ssh2_connect($remote_serv, intval($remote_port), array(), $callbacks);
ssh2_auth_password($connection, $remote_user, $remote_pass);
return array($connection, $remote_base_path);
}
示例9: stream_open
public function stream_open($path, $mode, $options, &$opened_path)
{
// parse URL
$parts = AJXP_Utils::safeParseUrl($path);
$this->repositoryId = $parts["host"];
$mainCacheDir = defined('AJXP_SHARED_CACHE_DIR') ? AJXP_SHARED_CACHE_DIR : AJXP_CACHE_DIR;
if (!isset(self::$delimiter) && file_exists($mainCacheDir . "/access.imap/mailbox_delim_" . $this->repositoryId)) {
self::$delimiter = file_get_contents($mainCacheDir . "/access.imap/mailbox_delim_" . $this->repositoryId);
}
$this->path = substr($parts["path"], 1);
//$this->mailbox = "INBOX";
$pathParts = explode("/", $this->path);
$pathParts = array_filter($pathParts, "rejectEmpty");
if (count($pathParts) > 1) {
$this->path = array_pop($pathParts);
$this->mailbox = implode("/", $pathParts);
} else {
if (count($pathParts) == 1) {
$this->mailbox = implode("/", $pathParts);
$this->path = "";
} else {
$this->mailbox = "";
$this->path = "";
}
}
$this->fragment = $parts["fragment"];
if (empty($this->path) && $mode !== 'np') {
return false;
}
if (!empty($this->mailbox)) {
$this->mailbox = mb_convert_encoding($this->mailbox, "UTF7-IMAP", SystemTextEncoding::getEncoding());
$this->mailbox = str_replace("__delim__", isset(self::$delimiter) ? self::$delimiter : "/", $this->mailbox);
}
if (!empty($this->fragment) && strpos($this->fragment, "attachments") === 0 && strpos($this->fragment, "/") !== false) {
// remove fragment
$ar = explode("#", $path);
$mailPath = array_shift($ar);
$ar = explode("/", $this->fragment);
$attachmentId = array_pop($ar);
$this->currentAttachmentData = array("realPath" => $mailPath, "attachmentId" => $attachmentId);
// EXTRACT ATTACHMENT AND RETURN
require_once AJXP_INSTALL_PATH . "/plugins/editor.eml/class.EmlParser.php";
$emlParser = new EmlParser("", "");
$attachMeta = array();
$this->data = $emlParser->getAttachmentBody($this->currentAttachmentData["realPath"], $this->currentAttachmentData["attachmentId"], true, $attachMeta);
if (self::$attachmentsMetadata == null) {
self::$attachmentsMetadata = array($attachMeta);
}
$this->currentAttachmentData["size"] = strlen($this->data);
$this->pos = 0;
$this->size = strlen($this->data);
return true;
}
// open IMAP connection
if (self::$currentStream != null) {
AJXP_Logger::debug(__CLASS__, __FUNCTION__, "Using currently opened stream! " . print_r(self::$currentStream, true));
$this->ih = self::$currentStream;
// Rewind everything
$this->dir_rewinddir();
$this->stream_seek(0);
} else {
$repository = ConfService::getRepositoryById($this->repositoryId);
$ssl = $repository->getOption("SSL") == "true" ? true : false;
$this->pop3 = $repository->getOption("BOX_TYPE") == "pop3" ? true : false;
$this->host = $repository->getOption("HOST");
$this->port = $repository->getOption("PORT");
$this->username = $repository->getOption("USER");
$this->password = $repository->getOption("PASS");
$server = "{" . $this->host . ":" . $this->port . "/" . ($this->pop3 ? "pop3/" : "") . ($ssl ? "ssl/novalidate-cert" : "novalidate-cert") . "}";
self::$currentRef = $server;
AJXP_Logger::debug(__CLASS__, __FUNCTION__, "Opening a new stream " . $server . " with mailbox '" . $this->mailbox . "'");
try {
$this->ih = imap_open($server . $this->mailbox, $this->username, $this->password, !$this->pop3 && empty($this->mailbox) ? OP_HALFOPEN : NULL, 1);
} catch (Exception $e) {
throw new Exception($e->getMessage() . " - imap errors : " . print_r(imap_errors(), true), $e->getCode());
}
self::$currentStream = $this->ih;
register_shutdown_function(array("imapAccessWrapper", "closeStreamFunc"));
}
if ($this->ih) {
if (!empty($this->path)) {
list($stats, ) = imap_fetch_overview($this->ih, $this->path);
$this->size = $stats->size;
$this->time = strtotime($stats->date);
}
return true;
} else {
return false;
}
}