Server IP : 184.154.167.98 / Your IP : 18.119.113.73 Web Server : Apache System : Linux pink.dnsnetservice.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 User : puertode ( 1767) PHP Version : 7.2.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/puertode/public_html/contratos/apps/user_ldap/lib/ |
Upload File : |
<?php /** * @copyright Copyright (c) 2016, ownCloud, Inc. * * @author Arthur Schiwon <blizzz@arthur-schiwon.de> * @author Bart Visscher <bartv@thisnet.nl> * @author Christopher Schäpers <kondou@ts.unde.re> * @author Joas Schilling <coding@schilljs.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@statuscode.ch> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin McCorkell <robin@mccorkell.me.uk> * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Roger Szabo <roger.szabo@web.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @license AGPL-3.0 * * This code is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License, version 3, * along with this program. If not, see <http://www.gnu.org/licenses/> * */ namespace OCA\User_LDAP; use OCA\User_LDAP\Mapping\UserMapping; use OCA\User_LDAP\Mapping\GroupMapping; use OCA\User_LDAP\User\Manager; abstract class Proxy { static private $accesses = array(); private $ldap = null; /** @var \OCP\ICache|null */ private $cache; /** * @param ILDAPWrapper $ldap */ public function __construct(ILDAPWrapper $ldap) { $this->ldap = $ldap; $memcache = \OC::$server->getMemCacheFactory(); if($memcache->isAvailable()) { $this->cache = $memcache->createDistributed(); } } /** * @param string $configPrefix */ private function addAccess($configPrefix) { static $ocConfig; static $fs; static $log; static $avatarM; static $userMap; static $groupMap; static $db; static $coreUserManager; static $coreNotificationManager; if($fs === null) { $ocConfig = \OC::$server->getConfig(); $fs = new FilesystemHelper(); $log = new LogWrapper(); $avatarM = \OC::$server->getAvatarManager(); $db = \OC::$server->getDatabaseConnection(); $userMap = new UserMapping($db); $groupMap = new GroupMapping($db); $coreUserManager = \OC::$server->getUserManager(); $coreNotificationManager = \OC::$server->getNotificationManager(); } $userManager = new Manager($ocConfig, $fs, $log, $avatarM, new \OCP\Image(), $db, $coreUserManager, $coreNotificationManager); $connector = new Connection($this->ldap, $configPrefix); $access = new Access($connector, $this->ldap, $userManager, new Helper($ocConfig), $ocConfig, $coreUserManager); $access->setUserMapper($userMap); $access->setGroupMapper($groupMap); self::$accesses[$configPrefix] = $access; } /** * @param string $configPrefix * @return mixed */ protected function getAccess($configPrefix) { if(!isset(self::$accesses[$configPrefix])) { $this->addAccess($configPrefix); } return self::$accesses[$configPrefix]; } /** * @param string $uid * @return string */ protected function getUserCacheKey($uid) { return 'user-'.$uid.'-lastSeenOn'; } /** * @param string $gid * @return string */ protected function getGroupCacheKey($gid) { return 'group-'.$gid.'-lastSeenOn'; } /** * @param string $id * @param string $method * @param array $parameters * @param bool $passOnWhen * @return mixed */ abstract protected function callOnLastSeenOn($id, $method, $parameters, $passOnWhen); /** * @param string $id * @param string $method * @param array $parameters * @return mixed */ abstract protected function walkBackends($id, $method, $parameters); /** * @param string $id * @return Access */ abstract public function getLDAPAccess($id); /** * Takes care of the request to the User backend * @param string $id * @param string $method string, the method of the user backend that shall be called * @param array $parameters an array of parameters to be passed * @param bool $passOnWhen * @return mixed, the result of the specified method */ protected function handleRequest($id, $method, $parameters, $passOnWhen = false) { $result = $this->callOnLastSeenOn($id, $method, $parameters, $passOnWhen); if($result === $passOnWhen) { $result = $this->walkBackends($id, $method, $parameters); } return $result; } /** * @param string|null $key * @return string */ private function getCacheKey($key) { $prefix = 'LDAP-Proxy-'; if($key === null) { return $prefix; } return $prefix.hash('sha256', $key); } /** * @param string $key * @return mixed|null */ public function getFromCache($key) { if($this->cache === null) { return null; } $key = $this->getCacheKey($key); $value = $this->cache->get($key); if ($value === null) { return null; } return json_decode(base64_decode($value)); } /** * @param string $key * @param mixed $value */ public function writeToCache($key, $value) { if($this->cache === null) { return; } $key = $this->getCacheKey($key); $value = base64_encode(json_encode($value)); $this->cache->set($key, $value, 2592000); } public function clearCache() { if($this->cache === null) { return; } $this->cache->clear($this->getCacheKey(null)); } }