@ -195,6 +195,7 @@ public class yacysearch {
Log . logInfo ( "LOCAL_SEARCH" , "ACCECC CONTROL: WHITELISTED CLIENT FROM " + client + " gets no search restrictions" ) ;
Log . logInfo ( "LOCAL_SEARCH" , "ACCECC CONTROL: WHITELISTED CLIENT FROM " + client + " gets no search restrictions" ) ;
} else if ( global | | fetchSnippets ) {
} else if ( global | | fetchSnippets ) {
// in case that we do a global search or we want to fetch snippets, we check for DoS cases
// in case that we do a global search or we want to fetch snippets, we check for DoS cases
synchronized ( trackerHandles ) {
int accInOneSecond = trackerHandles . tailSet ( Long . valueOf ( System . currentTimeMillis ( ) - 1000 ) ) . size ( ) ;
int accInOneSecond = trackerHandles . tailSet ( Long . valueOf ( System . currentTimeMillis ( ) - 1000 ) ) . size ( ) ;
int accInThreeSeconds = trackerHandles . tailSet ( Long . valueOf ( System . currentTimeMillis ( ) - 3000 ) ) . size ( ) ;
int accInThreeSeconds = trackerHandles . tailSet ( Long . valueOf ( System . currentTimeMillis ( ) - 3000 ) ) . size ( ) ;
int accInOneMinute = trackerHandles . tailSet ( Long . valueOf ( System . currentTimeMillis ( ) - 60000 ) ) . size ( ) ;
int accInOneMinute = trackerHandles . tailSet ( Long . valueOf ( System . currentTimeMillis ( ) - 60000 ) ) . size ( ) ;
@ -219,6 +220,7 @@ public class yacysearch {
Log . logWarning ( "LOCAL_SEARCH" , "ACCECC CONTROL: CLIENT FROM " + client + ": " + accInOneSecond + " searches in one second, blocked global search and snippets" ) ;
Log . logWarning ( "LOCAL_SEARCH" , "ACCECC CONTROL: CLIENT FROM " + client + ": " + accInOneSecond + " searches in one second, blocked global search and snippets" ) ;
}
}
}
}
}
if ( ( ! block ) & & ( post = = null | | post . get ( "cat" , "href" ) . equals ( "href" ) ) ) {
if ( ( ! block ) & & ( post = = null | | post . get ( "cat" , "href" ) . equals ( "href" ) ) ) {
@ -509,9 +511,11 @@ public class yacysearch {
// update the search tracker
// update the search tracker
try {
try {
synchronized ( trackerHandles ) {
trackerHandles . add ( theQuery . handle ) ;
trackerHandles . add ( theQuery . handle ) ;
if ( trackerHandles . size ( ) > 1000 ) trackerHandles . remove ( trackerHandles . first ( ) ) ;
if ( trackerHandles . size ( ) > 1000 ) trackerHandles . remove ( trackerHandles . first ( ) ) ;
sb . localSearchTracker . put ( client , trackerHandles ) ;
sb . localSearchTracker . put ( client , trackerHandles ) ;
}
if ( sb . localSearchTracker . size ( ) > 1000 ) sb . localSearchTracker . remove ( sb . localSearchTracker . keys ( ) . nextElement ( ) ) ;
if ( sb . localSearchTracker . size ( ) > 1000 ) sb . localSearchTracker . remove ( sb . localSearchTracker . keys ( ) . nextElement ( ) ) ;
} catch ( Exception e ) {
} catch ( Exception e ) {
e . printStackTrace ( ) ;
e . printStackTrace ( ) ;