webshell
Ghost Exploiter Team Official
Mass Deface
Directory >>
/
home
/
whitjouh
/
public_html
/
core
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Cache
/
Mass Deface Auto Detect Domain
/*Ubah Ke document_root untuk mass deface*/
File / Folder
Size
Action
.
-
+New File
Console
--
ren
Events
--
ren
RateLimiting
--
ren
ApcStore.php
2.455KB
edt
ren
ApcWrapper.php
1.93KB
edt
ren
ArrayLock.php
2.099KB
edt
ren
ArrayStore.php
4.674KB
edt
ren
CacheLock.php
1.794KB
edt
ren
CacheManager.php
10.639KB
edt
ren
CacheServiceProvider.php
1.318KB
edt
ren
DatabaseLock.php
3.761KB
edt
ren
DatabaseStore.php
10.863KB
edt
ren
DynamoDbLock.php
1.545KB
edt
ren
DynamoDbStore.php
14.597KB
edt
ren
FileLock.php
0.265KB
edt
ren
FileStore.php
9.673KB
edt
ren
HasCacheLock.php
0.665KB
edt
ren
LICENSE.md
1.05KB
edt
ren
Lock.php
3.497KB
edt
ren
LuaScripts.php
0.451KB
edt
ren
MemcachedConnector.php
2.326KB
edt
ren
MemcachedLock.php
1.419KB
edt
ren
MemcachedStore.php
6.178KB
edt
ren
NoLock.php
0.676KB
edt
ren
NullStore.php
2.343KB
edt
ren
PhpRedisLock.php
0.81KB
edt
ren
RateLimiter.php
4.927KB
edt
ren
RedisLock.php
1.732KB
edt
ren
RedisStore.php
10.136KB
edt
ren
RedisTagSet.php
3.127KB
edt
ren
RedisTaggedCache.php
3.041KB
edt
ren
Repository.php
16.702KB
edt
ren
RetrievesMultipleKeys.php
1.128KB
edt
ren
TagSet.php
2.458KB
edt
ren
TaggableStore.php
0.411KB
edt
ren
TaggedCache.php
2.501KB
edt
ren
composer.json
1.485KB
edt
ren
<?php namespace Illuminate\Cache; use Closure; use Illuminate\Contracts\Cache\Repository as Cache; use Illuminate\Support\InteractsWithTime; class RateLimiter { use InteractsWithTime; /** * The cache store implementation. * * @var \Illuminate\Contracts\Cache\Repository */ protected $cache; /** * The configured limit object resolvers. * * @var array */ protected $limiters = []; /** * Create a new rate limiter instance. * * @param \Illuminate\Contracts\Cache\Repository $cache * @return void */ public function __construct(Cache $cache) { $this->cache = $cache; } /** * Register a named limiter configuration. * * @param string $name * @param \Closure $callback * @return $this */ public function for(string $name, Closure $callback) { $this->limiters[$name] = $callback; return $this; } /** * Get the given named rate limiter. * * @param string $name * @return \Closure|null */ public function limiter(string $name) { return $this->limiters[$name] ?? null; } /** * Attempts to execute a callback if it's not limited. * * @param string $key * @param int $maxAttempts * @param \Closure $callback * @param int $decaySeconds * @return mixed */ public function attempt($key, $maxAttempts, Closure $callback, $decaySeconds = 60) { if ($this->tooManyAttempts($key, $maxAttempts)) { return false; } if (is_null($result = $callback())) { $result = true; } return tap($result, function () use ($key, $decaySeconds) { $this->hit($key, $decaySeconds); }); } /** * Determine if the given key has been "accessed" too many times. * * @param string $key * @param int $maxAttempts * @return bool */ public function tooManyAttempts($key, $maxAttempts) { if ($this->attempts($key) >= $maxAttempts) { if ($this->cache->has($this->cleanRateLimiterKey($key).':timer')) { return true; } $this->resetAttempts($key); } return false; } /** * Increment the counter for a given key for a given decay time. * * @param string $key * @param int $decaySeconds * @return int */ public function hit($key, $decaySeconds = 60) { $key = $this->cleanRateLimiterKey($key); $this->cache->add( $key.':timer', $this->availableAt($decaySeconds), $decaySeconds ); $added = $this->cache->add($key, 0, $decaySeconds); $hits = (int) $this->cache->increment($key); if (! $added && $hits == 1) { $this->cache->put($key, 1, $decaySeconds); } return $hits; } /** * Get the number of attempts for the given key. * * @param string $key * @return mixed */ public function attempts($key) { $key = $this->cleanRateLimiterKey($key); return $this->cache->get($key, 0); } /** * Reset the number of attempts for the given key. * * @param string $key * @return mixed */ public function resetAttempts($key) { $key = $this->cleanRateLimiterKey($key); return $this->cache->forget($key); } /** * Get the number of retries left for the given key. * * @param string $key * @param int $maxAttempts * @return int */ public function remaining($key, $maxAttempts) { $key = $this->cleanRateLimiterKey($key); $attempts = $this->attempts($key); return $maxAttempts - $attempts; } /** * Get the number of retries left for the given key. * * @param string $key * @param int $maxAttempts * @return int */ public function retriesLeft($key, $maxAttempts) { return $this->remaining($key, $maxAttempts); } /** * Clear the hits and lockout timer for the given key. * * @param string $key * @return void */ public function clear($key) { $key = $this->cleanRateLimiterKey($key); $this->resetAttempts($key); $this->cache->forget($key.':timer'); } /** * Get the number of seconds until the "key" is accessible again. * * @param string $key * @return int */ public function availableIn($key) { $key = $this->cleanRateLimiterKey($key); return max(0, $this->cache->get($key.':timer') - $this->currentTime()); } /** * Clean the rate limiter key from unicode characters. * * @param string $key * @return string */ public function cleanRateLimiterKey($key) { return preg_replace('/&([a-z])[a-z]+;/i', '$1', htmlentities($key)); } }