Advertisement
Guest User

Untitled

a guest
Feb 17th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.42 KB | None | 0 0
  1. package de.bdevgw.app.boerse;
  2.  
  3. import java.util.HashMap;
  4. import java.util.Timer;
  5. import java.util.TimerTask;
  6.  
  7. public class SpamManager
  8. {
  9.     private HashMap<String, Integer> requests = new HashMap<String, Integer>();
  10.     private HashMap<String, Integer> logins = new HashMap<String, Integer>();
  11.    
  12.     private int maxRequestsPerSecond;
  13.     private int maxLoginsPerIPPerMinute;
  14.    
  15.     public SpamManager(int maxRequestsPerSecond, int maxLoginsPerIPPerMinute)
  16.     {
  17.         this.maxRequestsPerSecond = maxRequestsPerSecond;
  18.         this.maxLoginsPerIPPerMinute = maxLoginsPerIPPerMinute;
  19.        
  20.         Timer clearReq = new Timer();
  21.         clearReq.schedule(new TimerTask()
  22.         {          
  23.             @Override
  24.             public void run()
  25.             {
  26.                 requests.clear();
  27.             }
  28.         }, 0, 1 * 1000);
  29.        
  30.         Timer clearLogin = new Timer();
  31.         clearLogin.schedule(new TimerTask()
  32.         {          
  33.             @Override
  34.             public void run()
  35.             {
  36.                 logins.clear();
  37.             }
  38.         }, 0, 60 * 1000);
  39.     }
  40.    
  41.     public boolean Request(String ip, int port)
  42.     {
  43.         if(requests.containsKey(ip + ":" + port))
  44.         {
  45.             requests.put(ip + ":" + port, requests.get(ip + ":" + port) + 1);
  46.         }
  47.         else
  48.         {
  49.             requests.put(ip + ":" + port, 1);
  50.         }
  51.        
  52.         return requests.get(ip + ":" + port) > maxRequestsPerSecond;
  53.     }
  54.    
  55.     public boolean Login(String ip)
  56.     {
  57.         if(logins.containsKey(ip))
  58.         {
  59.             logins.put(ip, logins.get(ip) + 1);
  60.         }
  61.         else
  62.         {
  63.             logins.put(ip, 1);
  64.         }
  65.        
  66.         return logins.get(ip) > maxLoginsPerIPPerMinute;
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement