Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F93859121
PhabricatorClientRateLimit.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Dec 2, 01:53
Size
1 KB
Mime Type
text/x-php
Expires
Wed, Dec 4, 01:53 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
22712681
Attached To
rPH Phabricator
PhabricatorClientRateLimit.php
View Options
<?php
final
class
PhabricatorClientRateLimit
extends
PhabricatorClientLimit
{
protected
function
getBucketDuration
()
{
return
60
;
}
protected
function
getBucketCount
()
{
return
5
;
}
protected
function
shouldRejectConnection
(
$score
)
{
$limit
=
$this
->
getLimit
();
// Reject connections if the average score across all buckets exceeds the
// limit.
$average_score
=
$score
/
$this
->
getBucketCount
();
return
(
$average_score
>
$limit
);
}
protected
function
getConnectScore
()
{
return
0
;
}
protected
function
getPenaltyScore
()
{
return
1
;
}
protected
function
getDisconnectScore
(
array
$request_state
)
{
$score
=
1
;
// If the user was logged in, let them make more requests.
if
(
isset
(
$request_state
[
'viewer'
]))
{
$viewer
=
$request_state
[
'viewer'
];
if
(
$viewer
->
isOmnipotent
())
{
// If the viewer was omnipotent, this was an intracluster request or
// some other kind of special request, so don't give it any points
// toward rate limiting.
$score
=
0
;
}
else
if
(
$viewer
->
isLoggedIn
())
{
// If the viewer was logged in, give them fewer points than if they
// were logged out, since this traffic is much more likely to be
// legitimate.
$score
=
0.25
;
}
}
return
$score
;
}
protected
function
getRateLimitReason
(
$score
)
{
$client_key
=
$this
->
getClientKey
();
// NOTE: This happens before we load libraries, so we can not use pht()
// here.
return
"TOO MANY REQUESTS
\n
"
.
"You (
\"
{$client_key}
\"
) are issuing too many requests "
.
"too quickly.
\n
"
;
}
}
Event Timeline
Log In to Comment