Move rate throttling to function in newsportal.php
This commit is contained in:
parent
58090b0120
commit
4766775a64
|
@ -9,6 +9,9 @@
|
||||||
include "auth.inc";
|
include "auth.inc";
|
||||||
include "$file_newsportal";
|
include "$file_newsportal";
|
||||||
|
|
||||||
|
$logfile=$logdir.'/newsportal.log';
|
||||||
|
throttle_hits();
|
||||||
|
|
||||||
// register parameters
|
// register parameters
|
||||||
$id=$_REQUEST["id"];
|
$id=$_REQUEST["id"];
|
||||||
$group=_rawurldecode($_REQUEST["group"]);
|
$group=_rawurldecode($_REQUEST["group"]);
|
||||||
|
@ -23,28 +26,11 @@
|
||||||
if(isset($_REQUEST["first"]))
|
if(isset($_REQUEST["first"]))
|
||||||
$first=$_REQUEST["first"];
|
$first=$_REQUEST["first"];
|
||||||
|
|
||||||
$logfile=$logdir.'/newsportal.log';
|
|
||||||
if(!isset($_SESSION['starttime'])) {
|
|
||||||
$_SESSION['starttime'] = time();
|
|
||||||
$_SESSION['views'] = 0;
|
|
||||||
}
|
|
||||||
$_SESSION['views']++;
|
|
||||||
|
|
||||||
// $loadrate = allowed article request per second
|
|
||||||
$loadrate = .2;
|
|
||||||
$rate = ($_SESSION['views'] / (time() - $_SESSION['starttime']));
|
|
||||||
if (($rate > $loadrate) && ($_SESSION['views'] > 5)) {
|
|
||||||
header("HTTP/1.0 429 Too Many Requests");
|
|
||||||
if(!isset($_SESSION['throttled'])) {
|
|
||||||
file_put_contents($logfile, "\n".format_log_date()." ".$config_name." Too many requests from ".$_SERVER['REMOTE_ADDR']." throttling", FILE_APPEND);
|
|
||||||
$_SESSION['throttled'] = true;
|
|
||||||
}
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
$_SESSION['rsactive'] = true;
|
$_SESSION['rsactive'] = true;
|
||||||
|
|
||||||
$location = $_SERVER['REQUEST_URI'].$_SERVER['REQUEST_STRING'];
|
$location = $_SERVER['REQUEST_URI'].$_SERVER['REQUEST_STRING'];
|
||||||
|
// preg_match('/id=(.*)&/', $location, $hash);
|
||||||
|
// $_SESSION['return_page'] = $location.'#'.$hash[1];
|
||||||
$_SESSION['return_page'] = $location.'#'.$id;
|
$_SESSION['return_page'] = $location.'#'.$id;
|
||||||
|
|
||||||
file_put_contents('/var/spool/rslight/log/access.log', "\n".format_log_date()." ".$config_name." ".$group.":".$id, FILE_APPEND);
|
file_put_contents('/var/spool/rslight/log/access.log', "\n".format_log_date()." ".$config_name." ".$group.":".$id, FILE_APPEND);
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
<?php
|
<?php
|
||||||
|
session_start();
|
||||||
header("Expires: ".gmdate("D, d M Y H:i:s",time()+(3600*24))." GMT");
|
header("Expires: ".gmdate("D, d M Y H:i:s",time()+(3600*24))." GMT");
|
||||||
|
|
||||||
include "config.inc.php";
|
include "config.inc.php";
|
||||||
include "auth.inc";
|
include "auth.inc";
|
||||||
include "$file_newsportal";
|
include "$file_newsportal";
|
||||||
|
|
||||||
|
throttle_hits();
|
||||||
|
|
||||||
// register parameters
|
// register parameters
|
||||||
$id=$_REQUEST["id"];
|
$id=$_REQUEST["id"];
|
||||||
$group=_rawurldecode($_REQUEST["group"]);
|
$group=_rawurldecode($_REQUEST["group"]);
|
||||||
|
|
|
@ -1420,10 +1420,10 @@ function np_get_db_article($article, $group, $makearray=1, $dbh=null) {
|
||||||
$dbh = null;
|
$dbh = null;
|
||||||
}
|
}
|
||||||
if($ok_article !== 1) {
|
if($ok_article !== 1) {
|
||||||
file_put_contents($logfile, "\n".format_log_date()." ".$config_name." DEBUG: ".$article." from ".$group." not found in database", FILE_APPEND);
|
// file_put_contents($logfile, "\n".format_log_date()." ".$config_name." DEBUG: ".$article." from ".$group." not found in database", FILE_APPEND);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
file_put_contents($logfile, "\n".format_log_date()." ".$config_name." DEBUG: fetched: ".$article." from ".$group, FILE_APPEND);
|
// file_put_contents($logfile, "\n".format_log_date()." ".$config_name." DEBUG: fetched: ".$article." from ".$group, FILE_APPEND);
|
||||||
if($makearray == 1) {
|
if($makearray == 1) {
|
||||||
$thisarticle = preg_split("/\r\n|\n|\r/", trim($msg2));
|
$thisarticle = preg_split("/\r\n|\n|\r/", trim($msg2));
|
||||||
array_pop($thisarticle);
|
array_pop($thisarticle);
|
||||||
|
@ -1454,4 +1454,26 @@ function get_config_value($configfile,$request) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function throttle_hits() {
|
||||||
|
global $CONFIG, $logdir;
|
||||||
|
$logfile=$logdir.'/newsportal.log';
|
||||||
|
if(!isset($_SESSION['starttime'])) {
|
||||||
|
$_SESSION['starttime'] = time();
|
||||||
|
$_SESSION['views'] = 0;
|
||||||
|
}
|
||||||
|
$_SESSION['views']++;
|
||||||
|
|
||||||
|
// $loadrate = allowed article request per second
|
||||||
|
$loadrate = .15;
|
||||||
|
$rate = ($_SESSION['views'] / (time() - $_SESSION['starttime']));
|
||||||
|
if (($rate > $loadrate) && ($_SESSION['views'] > 5)) {
|
||||||
|
header("HTTP/1.0 429 Too Many Requests");
|
||||||
|
if(!isset($_SESSION['throttled'])) {
|
||||||
|
file_put_contents($logfile, "\n".format_log_date()." ".$config_name." Too many requests from ".$_SERVER['REMOTE_ADDR']." throttling", FILE_APPEND);
|
||||||
|
$_SESSION['throttled'] = true;
|
||||||
|
}
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -22,10 +22,13 @@
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
session_start();
|
||||||
include "config.inc.php";
|
include "config.inc.php";
|
||||||
include "auth.inc";
|
include "auth.inc";
|
||||||
include "$file_newsportal";
|
include "$file_newsportal";
|
||||||
|
|
||||||
|
throttle_hits();
|
||||||
|
|
||||||
if(isset($frames_on) && $frames_on === true) {
|
if(isset($frames_on) && $frames_on === true) {
|
||||||
?>
|
?>
|
||||||
<script>
|
<script>
|
||||||
|
@ -52,7 +55,7 @@ $CONFIG = include($config_file);
|
||||||
if (isset($_GET['thisgroup'])) {
|
if (isset($_GET['thisgroup'])) {
|
||||||
$article_age = 30;
|
$article_age = 30;
|
||||||
} else {
|
} else {
|
||||||
$article_age = 7;
|
$article_age = 30;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Maximum number of articles to show
|
# Maximum number of articles to show
|
||||||
|
|
|
@ -5,6 +5,8 @@ session_start();
|
||||||
include "config.inc.php";
|
include "config.inc.php";
|
||||||
include "newsportal.php";
|
include "newsportal.php";
|
||||||
|
|
||||||
|
throttle_hits();
|
||||||
|
|
||||||
$snippet_size = 100;
|
$snippet_size = 100;
|
||||||
|
|
||||||
if(!isset($_POST['key']) || !password_verify($CONFIG['thissitekey'], $_POST['key'])) {
|
if(!isset($_POST['key']) || !password_verify($CONFIG['thissitekey'], $_POST['key'])) {
|
||||||
|
|
|
@ -9,6 +9,9 @@ include "config.inc.php";
|
||||||
include("$file_newsportal");
|
include("$file_newsportal");
|
||||||
include "auth.inc";
|
include "auth.inc";
|
||||||
|
|
||||||
|
$logfile=$logdir.'/newsportal.log';
|
||||||
|
throttle_hits();
|
||||||
|
|
||||||
// register parameters
|
// register parameters
|
||||||
$group=_rawurldecode($_REQUEST["group"]);
|
$group=_rawurldecode($_REQUEST["group"]);
|
||||||
if(isset($_REQUEST["first"]))
|
if(isset($_REQUEST["first"]))
|
||||||
|
|
Loading…
Reference in New Issue