public function remoteShareForOcsRemoteId($ocsRemoteId) { $searchString = 's:11:"ocsRemoteId";s:' . strlen($ocsRemoteId) . ':"' . $ocsRemoteId . '"'; $l = $this->storage->simpleStoreList(OCS_SQLSTORE_NS_REMOTE_SHARE, null, "", OCS_SQLSTORE_FORMAT, "%{$searchString}%"); if (count($l)) { return array_shift(array_values($l)); } else { return null; } }
public function listShares($limitToUser = '', $parentRepository = '', $cursor = null, $shareType = null) { $dbLets = array(); if ($this->sqlSupported) { // Get DB files $dbLets = $this->confStorage->simpleStoreList("share", $cursor, "", "serial", !empty($limitToUser) ? '%"OWNER_ID";s:' . strlen($limitToUser) . ':"' . $limitToUser . '"%' : '', $parentRepository); } // Get hardcoded files $files = glob(ConfService::getCoreConf("PUBLIC_DOWNLOAD_FOLDER") . "/*.php"); if ($files === false) { return $dbLets; } foreach ($files as $file) { if (basename($file) == "share.php") { continue; } $ar = explode(".", basename($file)); $id = array_shift($ar); $publicletData = $this->loadShare($id); if ($publicletData === false) { continue; } if (!empty($limitToUser) && (!isset($publicletData["OWNER_ID"]) || $publicletData["OWNER_ID"] != $limitToUser)) { continue; } if (!empty($parentRepository) && (is_string($publicletData["REPOSITORY"]) && $publicletData["REPOSITORY"] != $parentRepository || is_object($publicletData["REPOSITORY"]) && $publicletData["REPOSITORY"]->getUniqueId() != $parentRepository)) { continue; } $publicletData["SHARE_TYPE"] = "file"; $dbLets[$id] = $publicletData; } // Update share_type and filter if necessary foreach ($dbLets as $id => &$shareData) { if ($shareData === false) { unset($dbLets[$id]); continue; } $this->updateShareType($shareData); if (!empty($shareType) && $shareData["SHARE_TYPE"] != $shareType) { unset($dbLets[$id]); } } if (empty($shareType) || $shareType == "repository") { // BACKWARD COMPATIBILITY: collect old-school shared repositories that are not yet stored in simpleStore $storedIds = array(); foreach ($dbLets as $share) { if (empty($limitToUser) || $limitToUser == $share["OWNER_ID"]) { if (is_string($share["REPOSITORY"])) { $storedIds[] = $share["REPOSITORY"]; } else { if (is_object($share["REPOSITORY"])) { $storedIds[] = $share["REPOSITORY"]->getUniqueId(); } } } } // Find repositories that would have a parent $criteria = array(); $criteria["parent_uuid"] = $parentRepository == "" ? AJXP_FILTER_NOT_EMPTY : $parentRepository; $criteria["owner_user_id"] = $limitToUser == "" ? AJXP_FILTER_NOT_EMPTY : $limitToUser; if (count($storedIds)) { $criteria["!uuid"] = $storedIds; } $oldRepos = ConfService::listRepositoriesWithCriteria($criteria, $count); foreach ($oldRepos as $sharedWorkspace) { if (!$sharedWorkspace->hasContentFilter()) { $dbLets['repo-' . $sharedWorkspace->getId()] = array("SHARE_TYPE" => "repository", "OWNER_ID" => $sharedWorkspace->getOwner(), "REPOSITORY" => $sharedWorkspace->getUniqueId(), "LEGACY_REPO_OR_MINI" => true); //Auto Migrate? boaf. //$this->storeShare($sharedWorkspace->getParentId(), $data, "repository"); } } } return $dbLets; }
/** * @param String $action * @param Array $httpVars * @param Array $fileVars * @return String */ function authTokenActions($action, $httpVars, $fileVars) { if (AuthService::getLoggedUser() == null) { return; } $this->storage = ConfService::getConfStorageImpl(); if (!is_a($this->storage, "sqlConfDriver")) { return false; } $user = AuthService::getLoggedUser()->getId(); if (AuthService::getLoggedUser()->isAdmin() && isset($httpVars["user_id"])) { $user = AJXP_Utils::sanitize($httpVars["user_id"], AJXP_SANITIZE_EMAILCHARS); } switch ($action) { case "keystore_generate_auth_token": if (ConfService::getCoreConf("SESSION_SET_CREDENTIALS", "auth")) { $this->logDebug("Keystore Generate Tokens", "Session Credentials set: returning empty tokens to force basic authentication"); HTMLWriter::charsetHeader("text/plain"); echo ""; break; } $token = AJXP_Utils::generateRandomString(); $private = AJXP_Utils::generateRandomString(); $data = array("USER_ID" => $user, "PRIVATE" => $private); if (!empty($httpVars["device"])) { // Revoke previous tokens for this device $device = $httpVars["device"]; $keys = $this->storage->simpleStoreList("keystore", null, "", "serial", '%"DEVICE_ID";s:' . strlen($device) . ':"' . $device . '"%'); foreach ($keys as $keyId => $keyData) { if ($keyData["USER_ID"] != $user) { continue; } $this->storage->simpleStoreClear("keystore", $keyId); } $data["DEVICE_ID"] = $device; } $data["DEVICE_UA"] = $_SERVER['HTTP_USER_AGENT']; $data["DEVICE_IP"] = $_SERVER['REMOTE_ADDR']; $this->storage->simpleStoreSet("keystore", $token, $data, "serial"); HTMLWriter::charsetHeader("application/json"); echo json_encode(array("t" => $token, "p" => $private)); break; case "keystore_revoke_tokens": // Invalidate previous tokens $mess = ConfService::getMessages(); $passedKeyId = ""; if (isset($httpVars["key_id"])) { $passedKeyId = $httpVars["key_id"]; } $keys = $this->storage->simpleStoreList("keystore", null, $passedKeyId, "serial", '%"USER_ID";s:' . strlen($user) . ':"' . $user . '"%'); foreach ($keys as $keyId => $keyData) { $this->storage->simpleStoreClear("keystore", $keyId); } $message = array("result" => "SUCCESS", "message" => $mess["keystore.8"]); HTMLWriter::charsetHeader("application/json"); echo json_encode($message); break; case "keystore_list_tokens": if (!isset($user)) { break; } $keys = $this->storage->simpleStoreList("keystore", null, "", "serial", '%"USER_ID";s:' . strlen($user) . ':"' . $user . '"%'); foreach ($keys as $keyId => &$keyData) { unset($keyData["PRIVATE"]); unset($keyData["USER_ID"]); $deviceDesc = "Web Browser"; $deviceOS = "Unkown"; if (isset($keyData["DEVICE_UA"])) { $agent = $keyData["DEVICE_UA"]; if (strpos($agent, "python-requests") !== false) { $deviceDesc = "PydioSync"; if (strpos($agent, "Darwin") !== false) { $deviceOS = "Mac OS X"; } else { if (strpos($agent, "Windows/7") !== false) { $deviceOS = "Windows 7"; } else { if (strpos($agent, "Windows/8") !== false) { $deviceOS = "Windows 8"; } else { if (strpos($agent, "Linux") !== false) { $deviceOS = "Linux"; } } } } } else { $deviceOS = AJXP_Utils::osFromUserAgent($agent); } } $keyData["DEVICE_DESC"] = $deviceDesc; $keyData["DEVICE_OS"] = $deviceOS; } header("Content-type: application/json;"); echo json_encode($keys); break; default: break; } return null; }